Обновление Django до новой версии
Несмотря на то, что иногда это может быть сложным процессом, обновление до последней версии Django имеет ряд преимуществ:
- Добавляются новые функции и улучшения.
- Исправляются ошибки.
- Старые версии Django в конечном итоге больше не будут получать обновления безопасности. (см. Поддерживаемые версии).
- Обновление по мере выпуска каждой новой версии Django делает будущие обновления менее болезненными, поддерживая актуальность вашего кода.
Ниже приведены некоторые моменты, которые следует учитывать, чтобы сделать процесс обновления как можно более гладким.
Необходимое чтение
Если вы делаете обновление впервые, полезно прочитать руководство по различным процессам выпуска.
После этого вы должны ознакомиться с изменениями, внесенными в новую версию Django:
- Прочитайте примечания к выпуску для каждого «окончательного» выпуска начиная с версии после вашей текущей версии Django и вплоть до версии, до которой вы планируете обновление.
- Рассмотрите график устаревания для соответствующих версий.
Обратите особое внимание на несовместимые с предыдущими версиями изменения, чтобы получить четкое представление о том, что потребуется для успешного обновления.
Если вы обновляетесь более чем через одну версию функциональности (например, с A.B на A.B+2), обычно легче обновляться пошагово через каждую версию функциональности (с A.B на A.B+1, а затем на A.B+2), чем внедрять все изменения для каждой версии функциональности сразу. Для каждой версии функциональности используйте последнюю версию исправления (A.B.C).
Рекомендуется тот же подход к поэтапному обновлению при обновлении с одной LTS-версии на следующую.
Зависимости
В большинстве случаев необходимо также обновить до последней версии ваших зависимостей, связанных с Django. Если версия Django была выпущена недавно или если некоторые из ваших зависимостей плохо поддерживаются, некоторые из ваших зависимостей могут еще не поддерживать новую версию Django. В этих случаях вам может потребоваться подождать, пока не будут выпущены новые версии ваших зависимостей.
Решение предупреждений об устаревании
Перед обновлением рекомендуется решить любые предупреждения об устаревании, которые генерирует ваш проект при использовании текущей версии Django. Исправление этих предупреждений перед обновлением гарантирует, что вы будете проинформированы об областях кода, которые требуют изменения.
В Python предупреждения об устаревании по умолчанию отключены. Вам необходимо включить их, используя параметр командной строки -Wall Python или переменную среды PYTHONWARNINGS. Например, чтобы отобразить предупреждения во время запуска тестов:
$ python -Wall manage.py test
Если вы не используете Django-тестовый запуск, вам может потребоваться также убедиться, что любой вывод консоли не захватывается, чтобы не скрыть предупреждения об устаревании. Например, если вы используете py.test:
$ PYTHONWARNINGS=all py.test tests --capture=no
Прежде чем продолжить процесс обновления, устраните все предупреждения об устаревании в вашей текущей версии Django.
Приложения сторонних разработчиков могут использовать устаревшие API, чтобы поддерживать несколько версий Django, поэтому предупреждения об устаревании в установленных пакетах не обязательно указывают на проблему. Если пакет не поддерживает последнюю версию Django, рассмотрите возможность создания проблемы или отправки запроса на вытягивание для него.
Установка
Когда вы будете готовы, пришло время установить новую версию Django. Если вы используете virtualenv, а это обновление до новой версии, возможно, вы захотите сначала создать новую среду со всеми зависимостями.
Точно какие шаги вам понадобятся, зависит от вашего процесса установки. Наиболее удобный способ — использовать pip с флагом --upgrade или -U:
$ pip install -U Django
pip также автоматически удаляет предыдущую версию Django.
Если вы используете другой процесс установки, вам может потребоваться вручную удалить старую версию Django, и вам следует обратиться к полным инструкциям по установке.
Тестирование
После настройки новой среды запустите полный набор тестов для вашего приложения. Снова полезно включить предупреждения об устаревании, чтобы они отображались в выходных данных тестов (вы также можете использовать флаг, если вы тестируете приложение вручную, используя manage.py runserver):
$ python -Wall manage.py test
После запуска тестов исправьте любые ошибки. Пока у вас свежи в памяти примечания к выпуску, это также может быть хорошим временем, чтобы воспользоваться новыми функциями Django, переписав свой код, чтобы устранить любые предупреждения об устаревании.
Развертывание
Когда вы достаточно уверены, что ваше приложение работает с новой версией Django, вы можете приступать к развертыванию вашего обновленного проекта Django.
Если вы используете кэширование, предоставляемое Django, вам следует очистить кэш после обновления. В противном случае могут возникнуть проблемы, например, если вы кэшируете сериализованные объекты, так как эти объекты не гарантируют совместимость с pickle между версиями Django. Предыдущий случай несовместимости был при кэшировании сериализованных объектов HttpResponse, либо напрямую, либо косвенно через декоратор cache_page().
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/1.11/howto/upgrade-version/