Django

Debian веб-сервер через Virtualbox для разработки и тестирования на Django

Во время работы над одним проектом проектом необходимо было чтоб использовались master-slave репликации в PostgreSQL и Django операции записи делала в мастер, а читала все со слейва. Так как на тестовый сервер по консоли доступ был только у тим-лида, а багов из-за master-slave было много (особенно на сигналах), решил я у себя поднять подобную конфигурацию вебсервера чтоб приблизить ситуацию к тестовому и использовать ее в будущем в подобных целях.

Еще удобность, что можно просто делать бэкап файла виртуальной машины и не бояться вылетов диска и прочего железа. Эту инструкцию я составил для себя из гугления, чтоб было куда подглянуть и ...

Читать далее

Django 1.5 released

Django 1.5 released

by James Bennett on Feb. 26, 2013

Увидел я сегодня этот текст на официальном сайте Джанги и решил написать этот пост.

Релиз получился с немалыми изменениями.

Основные из них это:

  • поддержка настраиваемой модели пользователя
  • первый релиз Django с поддержкой Python 3 (в частности, Python 3.2 и выше). обратите внимание, что минимальная версия для Django 1.5, Python 2.6.5.  Версия Python 2.7.3 или более новая рекомендуется.
  • Немного изменилась документация, больше расписано в примерах про использование представлений на базе классов.
  • ALLOWED_HOSTS обязательная настройка на продакшене.
  • request.POST теперь будед содержать данные только если ...

Читать далее

Установка PIL если sorl.thumbnail не работает в virtualenv

Если sorl.thumbnail не работает, то возможно это из-за того что плохо установлен PIL.

В Debian. Установка PIL бывает неверной когда вы используете  virtualenv, но это можно поправить..., для этого ставим нужные пакеты для компиляции. 

apt-get -y install build-essential python-dev python-virtualenv libbz2-dev zlib1g-dev \
  libfreetype6-dev libjpeg8-dev build-dep python-imaging libfreetype6-dev libxml2-dev libxslt1-dev zlib1g-dev

Далее в зависимости от того какая у вас система 32-bit или 64-bit  нужно поправить ссылки на модули

для "i386-linux-gnu":

sudo ln -s /usr/lib/i386-linux-gnu/libfreetype.so /usr/lib/
sudo ln -s /usr/lib/i386-linux-gnu/libz.so /usr/lib/
sudo ln -s /usr/lib/i386-linux-gnu ...

Читать далее

Django-celery. Идем по граблям своей дорогой.

Давненько что-то я не писал ничего.

Вот понадобилось поднять django-celery. В google информации рускоязычной не особо много, да и то что было немного уже устарело как показалось мне. Вот я и опишу с чем сталкивался в ходе разворачивания этого приложения.

На момент установки была последняя версия 3.0.11. Ее я и взял.
Celery поддерживает несколько бекендов, включая RabbitMQ, Redis, базу данных и другие.
Я ранее особо с этим не работал, поэтому особо не заморачивался с выбором и по рекомендации разработчиков выбрал RabbitMQ. У меня проект не высоко-нагружен был, так что особых претензий не должно быть, в общем решил поработать ...

Читать далее

Получение случайных объектов из queryset в Django

Получение случайных объектов из queryset в Django

Часто в проектах Django необходимо сделать выборку случайных записей из базы.

О
бычно для получения случайного набора элементов (среза элементов) в Django "обычным" способом делают так:

Book.objects.all (). Order_by ('?')[: 10]

Приведенный выше код, сортирует все книги в произвольном порядке, а затем выбирает первые 10 объектов.
Этот подход не является
, правда, эффективным в MySQL. С использованием "ORDER BY ?" действительно это дорого для запроса.

Поэтому,
хорошо искать другие способы получить случайные элементы (случайный срез).

Например можно случайный срез записей делать так
:

import random
count = Book.objects.all().count()
slice = random.random() * (count - 10)
Book.objects.all()[slice: slice+10]


Приведенный выше ...

Читать далее

South migrate: как поле ForeignKey сделать ManyToMany без потери данных

South migrate: как поле ForeignKey сделать ManyToMany без потери данных

В одном из проектов мне необходимо было ForeignKey превратить в ManyToMany без потери данных. Русского мануала я не нашел для этого. Но нашел статейку на английском и, исправив ошибки в ней, решил сделать русский вариант.

Итак, задача - нужно превратить поля таблицы базы данных с отношенияем FK в M2M отношения при помощи South и при этом не потерять существующие заполненные данные.

1. Вот исходная модель (образец), приложение  назовем appz, допустим.

class TestData(models.Model):
    field1 = models.CharField(max_length=200)
    field2 = models.CharField(max_length=200)

class Knight(models.Model):
    name = models.CharField(max_length=100)
    additional_field_new_name = models.CharField(max_length=155, default='')
    data ...

Читать далее

Django аутентификация. Email-адрес вместо имени пользователей

Часто в приложениях, которые мы разрабатываем, необходимо использовать адреса электронной почты для авторизации, а не имя пользователя. Посетителям намного легче помнить свой адрес электронной почты, чем постоянно растущий список имен пользователей на сайтах, так как часто они оказываются заняты.

Чтобы написать простую аутентификацию по email на стороне
сервера в джанго, поступим  следующим образом:

1. В settings.py добавим следующие строки (замените youproject именем вашего приложения):

AUTHENTICATION_BACKENDS = (
    'youproject.backends.EmailAuthBackEnd',
    'django.contrib.auth.backends.ModelBackend',
)

2. Создайте файл с именем backends.py с таким соержанием и поместите его в корневой папке (т.е. той же папке, settings.py)

from ...

Читать далее

Zinnia и его альтернативы

Zinnia и его альтернативы

На Django (джанго) при желании можно самому сесть и написать простенький блог буквально за час c довольно немалыми возможностями. Да! И это будет ваш код и Вы будете знать что делается у вас на сайте и как :).

Для этого нужно иметь время, а особенно если хочешь хорошо сверстанный сайт - на это надо еще больше времени. Так как я особо верстать не люблю - меня больше привлекает сторона программирования, и у меня много уходит времени на другие проекты, я решил использовать уже готовый блог для своего сайта как основу, и потом его уже изменять, разбираться в чужом питон коде - это довольно просто ...

Читать далее

Система вопрос-ответ osqa на сайте

Система вопрос-ответ osqa на сайте

Приветствую, уважаемый читатель моей колонки.

Долго я думал над тем чем бы таким заменить возможности форума и иметь возможность помогать посетителям решать проблемы. И вот сегодня я определился, что наиболее удачным для моего сайта будет система open source Q&A - система Вопрос-Ответ с открытым исходным кодом. Это то что Вы видите при попадании на главную (при нажатии на название сайта в верху, например)

Почему именно она ?
Ну во впервых она написана на с использованием Django и у нее открытый исходный код. Ну и перепробовав еще несколько для сравнения мне эта наиболее понравилась как не особо нагроможденная и с большим функционалом ...

Читать далее

Рекомендации и удобства по работе с python и django

Для проверки настройки параметров базы в django (которые указываются в settings.py) зайдите в django shell (manage.py shell) и выполните такие команды:

from django.db import connection
cursor = connection.cursor()

Если не было сообщений о ошибке, значит все ОК, иначе – что-то не правильно указали.Для просмотра подключенных модулей для текущего python: в обычной консоле набирите:

python -c "help('modules')"


или в интерактивном интерпретаторе python’a:

help('modules')

Для просмотра PYTHONPATH в консоле python наберите:

import sys
sys.path

В django существует два простых способа просмотра значений переменных при отладке:
* при помощи обычного print
* вставка оператора assert False, variable_name , где ...

Читать далее