Обновление 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 предупреждения об устаревании по умолчанию отключены. Вы должны включить их, используя опцию командной строки Python -Wa или переменную среды PYTHONWARNINGS. Например, чтобы отобразить предупреждения во время выполнения тестов:
$ python -Wa manage.py test
...\> py -Wa manage.py test
Если вы не используете загрузчик тестов Django, вам может потребоваться также убедиться, что любой вывод консоли не перехватывается, что скрыло бы предупреждения об устаревании. Например, если вы используете py.test:
$ PYTHONWARNINGS=always py.test tests --capture=no
Устраните любые предупреждения об устаревании с вашей текущей версией Django, прежде чем продолжать процесс обновления.
Приложения сторонних разработчиков могут использовать устаревшие API, чтобы поддерживать несколько версий Django, поэтому предупреждения об устаревании в установленных вами пакетах не обязательно указывают на проблему. Если пакет не поддерживает последнюю версию Django, рассмотрите возможность создания вопроса или отправки запроса на вытягивание для него.
Установка
Когда вы будете готовы, пришло время установить новую версию Django. Если вы используете virtualenv, и это обновление до новой версии, вы можете сначала создать новую среду со всеми зависимостями.
Если вы установили Django с помощью pip, вы можете использовать флаг --upgrade или -U:
$ pip install -U Django
...\> pip install -U Django
Тестирование
Когда новая среда будет настроена, запустите полную тестовую программу для вашего приложения. Опять же, полезно включить предупреждения об устаревании, чтобы они отображались в выводе тестов (вы также можете использовать флаг, если вы тестируете свое приложение вручную, используя manage.py runserver):
$ python -Wa manage.py test
...\> py -Wa manage.py test
После запуска тестов исправьте любые ошибки. Пока вы помните примечания к релизу, это также может быть хорошим временем, чтобы воспользоваться новыми функциями Django, переработав код, чтобы устранить любые предупреждения об устаревании.
Развертывание
Когда вы достаточно уверены, что ваше приложение работает с новой версией Django, вы готовы перейти к развертыванию вашего обновленного проекта Django.
Если вы используете кэширование, предоставляемое Django, вам следует рассмотреть возможность очистки кэша после обновления. В противном случае у вас могут возникнуть проблемы, например, если вы кэшируете закодированные объекты, так как эти объекты не гарантируют совместимость с сериализацией между версиями Django. В прошлом была несовместимость с кэшированием закодированных объектов HttpResponse, непосредственно или косвенно через декоратор cache_page().
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/2.2/howto/upgrade-version/