Показаны сообщения с ярлыком django. Показать все сообщения
Показаны сообщения с ярлыком django. Показать все сообщения

четверг, 9 октября 2014 г.

Ошибки при переходе на Django 1.7

TypeError: Couldn't reconstruct m2m field tags on Task: __init__() got an unexpected keyword argument 'serialize'

Для устранения данной ошибки необходимо обновить обновить пакет django-taggit:

# pip install django-taggit --upgrade

Следующая ошибка:

ImportError: cannot import name simplejson

вылечилась обновлением пакета django-recaptcha:

# pip install django-recaptcha --upgrade

понедельник, 6 октября 2014 г.

суббота, 4 октября 2014 г.

Определение нажатой кнопки в Django

Если на странице у нас находятся 2 формы соответственно с 2-мя кнопками "Отправить", то во вьюхе нужно как-то определить, какую именно кнопку нажал пользователь.

Решение проблемы следующее:

Для начала для каждой кнопки задаем уникальное имя:

<button type="submit" name="button1">Отправить</button>
<button type="submit" name="button2">Отправить</button>

Затем в представлении определяем, какая именно кнопка была нажата:

if 'button1' in request.POST:
    # Нажата кнопка 1
elif 'button2' in request.POST:
    # Нажата кнопка 2

воскресенье, 2 февраля 2014 г.

Получение всех объектов модели в Django

Команда:

model_name.objects.all()

возвращает все объекты модели с именем model_name.

Запуск django shell из командной строки

Команда:

$ python manage.py shell

запускает командную оболочку django shell.

Создание приложения в Django

Команда:

$ python manage.py startapp app_name

создает Django-приложение с именем app_name.

Создание проекта в Django

Каждый раз забываю...

Простая команда:

django-admin.py startproject project_name

создает проект Django.

Создание модели по существующей БД

Есть в Django мега-крутая фича, позволяющая моментально получить модель по существующей базе данных. Название волшебной команды — inspectdb. Следующая команда создает файл с моделью models.py на основании схемы базы данных, которая указана в settings.py:

$ python manage.py inspectdb > models.py

Конечно построенную модель нужно просмотреть и при необходимости подправить.

пятница, 3 января 2014 г.

Пакет south

Важное приложения для осуществления миграций. Установка:

# pip install south

В INSTALLED_APPS необходимо добавить 'south'.

Пакет django-recaptcha

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

# pip install django-recaptcha

В INSTALLED_APPS необходимо добавить 'captcha'.

Пакет django-taggit

Очень ценное приложение, реализующее поддержку тегов. Установка:

# pip install django-taggit

В INSTALLED_APPS необходимо добавить 'taggit'.

Ошибка «No module named defaults в Django»

При миграции с Django 1.5.1 на Django 1.6.1 обнаружил ошибку:

Exception Type: ImportError
Exception Value: No module named defaults


В следующей строке кода:

from django.conf.urls.defaults import patterns, url, include

Лечение — простое: заменить строчку выше на следующую:

from django.conf.urls import patterns, url, include

четверг, 2 января 2014 г.

Установка django через pip

Установка предельно простая:

# pip install django

Проверяем корректность установки:

$ python

>>> import django
>>> django.VERSION


Если ошибок нет — то всё в порядке.

Update 08.09.2015
Желательно зайти на сайт https://www.djangoproject.com/download/ и узнать последнюю версию Django и при установке указать именно ее. Пример:

pip install Django==1.8.4

воскресенье, 14 июля 2013 г.

Как отобразить в админке Django поля, помеченные в модели как editable='False'?

В файле admin.py добавляем строчку в соответствующем классе:

readonly_fields=('field_name',)

где field_name — имя поля, которое помечено, как editable='False' в модели.

Как создать foreign key на таблицу User в Django?

Для начала необходимо импортировать соответствующую модель:

from django.contrib.auth.models import User

Ну и собственно в самом классе добавляем поле со ссылкой на пользователя:

user = models.ForeignKey(User,)

воскресенье, 30 июня 2013 г.

Ошибка «Undefined variable from import»

Просматривая файлы компонента django-registration в файле registration/backends/default/views.py обнаружил ошибку в строке:

if Site._meta.installed:

типа переменная _meta не определена, хотя компонент django-registration в процессе работы ошибок не выдавал.

Лечение следующее: в Eclipse на строке нажать Ctrl+1, и выбрать UndefinedVariable.

суббота, 22 июня 2013 г.

Местоположение исходников Django в системе

Следующая нехитрая команда выводит полный путь к исходникам Django:

python -c "
import sys
sys.path = sys.path[1:]
import django
print(django.__path__)"

четверг, 20 июня 2013 г.

Как узнать, какой sql-скрипт сгенерирует Django?

Посмотреть, как в реальности создадутся таблички на основе модели приложения, можно с помощью следующей команды:

$ python manage.py sql app_name, где app_name — имя приложения.

Данная команда только покажет скрипт, но ничего не создаст.

Запуск shell с окружением Django в Eclipse

Правой кнопкой мыши по проекту: Django -> Shell whith django environment

Фича полезная, должна пригодиться.

Настройка отправки писем в Django

Если письма не отправляются, надо залезть в settings.py и проверить настройки. Вот работающий конфиг:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
DEFAULT_FROM_EMAIL = 'user@domain.com'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.domain.com'
EMAIL_HOST_USER = 'user@domain.com'
EMAIL_HOST_PASSWORD = 'password'
EMAIL_PORT = 587

где user@domain.com — полное название вашего почтового ящика, а smtp.domain.com — адрес smtp-сервера вашего хостера. К примеру у хостинга jino этот адрес выглядит так: smtp.jino.ru.