時には更新作業は複雑な手順になってしまうことがありますが、Django の最新版に更新すると、以下ような恩恵が受けられます。
このセクションでは、更新作業ができるかぎりスムーズに行う助けになるよう、特に注意するべきことをいくつか説明しています。
はじめて Django を更新する時には、Django のリリースプロセスガイド を読んでおくと役に立つでしょう。
Afterward, you should familiarize yourself with the changes that were made in the new Django version(s):
中でも特に、後方互換性のない変更点に注意してください。この点に注目すると、正しく更新するために必要なことがはっきりとわかるようになります。
If you're upgrading through more than one feature version (e.g. 2.0 to 2.2), it's usually easier to upgrade through each feature release incrementally (2.0 to 2.1 to 2.2) rather than to make all the changes for each feature release at once. For each feature release, use the latest patch release (e.g. for 2.1, use 2.1.15).
あるLTSから次のLTSにアップグレードする場合は、インクリメンタルなアップグレードする方法を推奨します。
ほとんどの場合、Django が依存しているパッケージも最新版に更新する必要があるでしょう。その Django のバージョンがリリースされたばかりで、依存関係にあるパッケージがきちんとメンテナンスされていなかった場合、新バージョンの Django に必要なパッケージがまだインストールできないかもしれません。そのような場合には、そうした Django の依存パッケージの新バージョンが使えるようになるまで、少し待たなければならない場合があります。
アップグレードの前、Django の現在のバージョンを使っている間に、プロジェクトが挙げてくる廃止予定警告を解決しておくのがよいでしょう。アップグレードの前にこれらの警告を解決することで、コードが警告を必要とする領域について通知されるようにできます。
In Python, deprecation warnings are silenced by default. You must turn them on
using the -Wa
Python command line option or the PYTHONWARNINGS
environment variable. For example, to show warnings while running tests:
$ python -Wa manage.py test
...\> py -Wa manage.py test
If you're not using the Django test runner, you may need to also ensure that any console output is not captured which would hide deprecation warnings. For example, if you use pytest:
$ PYTHONWARNINGS=always pytest tests --capture=no
アップグレードプロセスを続ける前に、Django の現在のバージョンで廃止予定警告を解決してください。
Django の複数バージョンをサポートするために、サードパーティアプリケーションは廃止される API を使用しているかもしれません。そのため、インストールしたパッケージの廃止予定警告は必ずしも問題を示しません。パッケージが Django の最新のバージョンをサポートしていない場合、問題を提起するかプルリクエストを送ることを考えてみてください。
Once you're ready, it is time to install the new Django version. If you are using a virtual environment
and it
is a major upgrade, you might want to set up a new environment with all the
dependencies first.
Django を pip でインストールした場合は、--upgrade
か -U
フラグが使用できます。
$ python -m pip install -U Django
...\> py -m pip install -U Django
新しい環境が設定されたら、 run the full test suite 。テストの出力に表示されるように、廃止予定の警告を有効にすると便利です。 (manage.py runserver
を使用してアプリケーションを手動でテストする場合は、フラグを使用することもできます)
$ python -Wa manage.py test
...\> py -Wa manage.py test
テストを実行したら、テストに失敗した点をすべて修正しましょう。リリースノートの内容を心に留めながらコードをリファクタリングして、非推奨の警告が出ないようにすれば、Django の新しい機能の恩恵も受けられるかもしれません。
新しいバージョンの Django でもアプリケーションが動作すると自信を持って言えるようになったならば、更新した Django プロジェクトを デプロイ する準備ができたことになります.
Django が提供するキャッシュを利用している場合には、更新後にキャッシュをクリアしなければなりません。クリアしなかった場合にはどんな問題が起こり得るでしょうか? たとえば、pickle 化したオブジェクトをキャッシュしていた場合には、複数のバージョンの Django にわたって pickle の互換性が保証されません。過去の非互換性の例では、pickle 化された HttpResponse
オブジェクトを、 cache_page()
デコレータを介して直接的または間接的にキャッシュしていました。
2022年6月01日