Как обновить Django до более новой версии
Хотя иногда это может быть сложным процессом, обновление до последней версии Django имеет несколько преимуществ:
- Добавляются новые функции и улучшения.
- Исправляются ошибки.
- Более старые версии Django в конечном итоге перестанут получать обновления безопасности. (см. Поддерживаемые версии).
- Обновление по мере выхода каждой новой версии Django делает будущие обновления менее болезненными, поддерживая актуальность вашей базы кода.
Вот некоторые моменты, которые следует учитывать, чтобы сделать процесс обновления как можно более гладким.
Необходимое чтение
Если вы делаете обновление впервые, полезно прочитать руководство по различным процессам выпуска.
После этого вы должны ознакомиться с изменениями, внесёнными в новую версию Django:
- Прочитайте примечания к выпуску для каждого «окончательного» релиза начиная с версии после вашей текущей версии Django и до версии, до которой вы планируете обновиться.
- Рассмотрите график устаревания для соответствующих версий.
Обратите особое внимание на несовместимые с предыдущими версиями изменения, чтобы получить ясное представление о том, что потребуется для успешного обновления.
Если вы обновляете более чем на одну версию функций (например, с 2.0 до 2.2), обычно проще обновляться через каждый приращение выпуска функций (с 2.0 до 2.1, а затем до 2.2), чем внедрять все изменения сразу для каждой версии функций. Для каждого выпуска функций используйте последнюю исправляющую версию (например, для 2.1 используйте 2.1.15).
Рекомендуется тот же подход к поэтапному обновлению при обновлении с одной LTS-версии на другую.
Зависимости
В большинстве случаев также потребуется обновить до последней версии ваших зависимостей, связанных с Django. Если версия Django была недавно выпущена или если некоторые из ваших зависимостей не поддерживаются должным образом, некоторые из ваших зависимостей могут пока не поддерживать новую версию Django. В таких случаях может потребоваться подождать, пока не будут выпущены новые версии ваших зависимостей.
Решение предупреждений об устаревании
Перед обновлением рекомендуется устранить все предупреждения об устаревании, выдаваемые вашим проектом при использовании текущей версии Django. Исправление этих предупреждений перед обновлением гарантирует, что вы будете осведомлены о проблемных участках кода, которые нуждаются в изменении.
В Python предупреждения об устаревании по умолчанию отключаются. Их нужно включить, используя параметр командной строки -Wa или переменную окружения PYTHONWARNINGS. Например, чтобы отобразить предупреждения при запуске тестов:
$ python -Wa manage.py test
...\> py -Wa manage.py test
Если вы не используете тестовый запуск Django, вам может потребоваться также убедиться, что вывод консоли не захватывается, чтобы предупреждения об устаревании не скрывались. Например, если вы используете pytest:
$ PYTHONWARNINGS=always pytest tests --capture=no
Устраните все предупреждения об устаревании с использованием текущей версии Django перед продолжением процесса обновления.
Приложения сторонних разработчиков могут использовать устаревшие API, чтобы поддерживать несколько версий Django, поэтому предупреждения об устаревании в установленных вами пакетах не обязательно означают проблему. Если пакет не поддерживает последнюю версию Django, рассмотрите возможность создания вопроса или отправки запроса на вытягивание для него.
Установка
Когда вы будете готовы, пришло время установить новую версию Django. Если вы используете virtual environment и это обновление до основной версии, вы можете сначала настроить новую среду со всеми зависимостями.
Если вы установили Django с помощью pip, вы можете использовать флаг --upgrade или -U:
$ python -m pip install -U Django
...\> py -m 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/5.1/howto/upgrade-version/