Обновление 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 предупреждения об устаревании по умолчанию отключены. Их необходимо включить с помощью параметра командной строки -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.1/howto/upgrade-version/