10 мая 2012 г.

Миграция на Django 1.4

Если вы тоже столкнулись с проблемой переноса старых проектов на Django 1.4, то этот пост для вас.

Первое что довольно сильно напрягает это «Deprecation warnings» в логах:
  • DeprecationWarning: The syntax for the url template tag is changing. Load the url tag from the future tag library to start using the new behavior.
  • The ADMIN_MEDIA_PREFIX setting has been removed; use STATIC_URL instead.
  • Authentication backends without a `supports_inactive_user` attribute are deprecated. Please define it ...

К слову, в Django 1.4 этот список довольно большой.

Один вариант решения это «Забить!» и вставить в manage.py пару строчек:
import warnings
warnings.filterwarnings('ignore', category=DeprecationWarning)

Другой — это заменить в строке выше 'ignore' на 'error' и попробовать исправить все ошибки. «ADMIN_MEDIA_PREFIX» и «supports_inactive_user» решаются довольно быстро, а вот с шаблонными «url» тегами придётся повозиться:
  • Добавить в шаблон тег «{% load url from future %}».
  • Обновить теги ссылок например «{% url myapp:view-name arg arg2 as the_url %}» должно стать «{% url 'myapp:view-name' arg arg2 as the_url %}».
При мысле о том, что нужно бегать по всем шаблонам и ручками добавлять кавычки и «load» теги, становится как-то дурно и хочется воспользоваться вариантом «Забить!», что я и сделал. Но дабы упростить себе жизнь я написал небольшой скрипт, который делает это автоматически.

Работает очень просто:
1. Ставим пакет.
2. Заходим в папку с django проектом.
3. Для начала запускаем скрипт с ключом «--dry-run»: django-make-future-url.py --dry-run.
4. Внимательно смотрим что на что заменяется.
5. Обновляем файлы по-настоящему: django-make-future-url.py.

Теперь во всех *.html, *.txt файлах правильные «url» теги.

Комментариев нет:

Отправить комментарий