Djangoを新しいバージョンにアップグレードする—Djangoのドキュメント

提供:Dev Guides
< DjangoDjango/docs/3.2.x/howto/upgrade-version
移動先:案内検索

Djangoを新しいバージョンにアップグレードする

複雑なプロセスになることもありますが、最新のDjangoバージョンにアップグレードすることにはいくつかの利点があります。

  • 新機能と改善点が追加されました。
  • バグが修正されました。
  • 古いバージョンのDjangoは、最終的にセキュリティアップデートを受信しなくなります。 (サポートされているバージョンを参照)。
  • 新しいDjangoリリースが利用可能になるたびにアップグレードすると、コードベースを最新の状態に保つことができるため、将来のアップグレードの負担が軽減されます。

アップグレードプロセスをできるだけスムーズにするために考慮すべき点がいくつかあります。

必読

アップグレードを初めて行う場合は、さまざまなリリースプロセスに関するガイドを読むと便利です。

その後、新しいDjangoバージョンで行われた変更について理解する必要があります。

  • 現在のDjangoバージョンの後から、アップグレードする予定のバージョンまでの各「最終」リリースのリリースノートをお読みください。
  • 関連するバージョンについては、非推奨タイムラインをご覧ください。

アップグレードを成功させるために何が必要かを明確に把握するために、後方互換性のない変更に特に注意を払ってください。

複数の機能バージョンを介してアップグレードする場合(例: 2.0から2.2)、通常、各機能リリースのすべての変更を一度に行うよりも、各機能リリースを段階的に(2.0から2.1から2.2)アップグレードする方が簡単です。 機能リリースごとに、最新のパッチリリースを使用します(例: 2.1の場合は、2.1.15を使用します)。

あるLTSから次のLTSにアップグレードする場合は、同じ増分アップグレードアプローチをお勧めします。


依存関係

ほとんどの場合、Django関連の依存関係の最新バージョンにもアップグレードする必要があります。 Djangoバージョンが最近リリースされた場合、または一部の依存関係が適切に維持されていない場合、一部の依存関係はまだ新しいDjangoバージョンをサポートしていない可能性があります。 このような場合、依存関係の新しいバージョンがリリースされるまで待たなければならない場合があります。


非推奨の警告の解決

アップグレードする前に、現在のバージョンのDjangoを使用しているときにプロジェクトによって発生した非推奨の警告を解決することをお勧めします。 アップグレードする前にこれらの警告を修正することで、変更が必要なコードの領域について確実に通知されます。

Pythonでは、非推奨の警告はデフォルトで無音になっています。 -Wa Pythonコマンドラインオプションまたは PYTHONWARNINGS環境変数を使用してこれらをオンにする必要があります。 たとえば、テストの実行中に警告を表示するには、次のようにします。

Djangoテストランナーを使用していない場合は、非推奨の警告を非表示にするコンソール出力がキャプチャされていないことも確認する必要があります。 たとえば、 pytest を使用する場合:

$ PYTHONWARNINGS=always pytest tests --capture=no

アップグレードプロセスを続行する前に、現在のバージョンのDjangoで非推奨の警告を解決してください。

サードパーティのアプリケーションは、Djangoの複数のバージョンをサポートするために非推奨のAPIを使用する場合があるため、インストールしたパッケージの非推奨の警告は必ずしも問題を示しているわけではありません。 パッケージが最新バージョンのDjangoをサポートしていない場合は、問題を提起するか、プルリクエストを送信することを検討してください。


インストール

準備ができたら、新しいDjangoバージョンをインストールします。 virtual environmentを使用していて、それがメジャーアップグレードである場合は、最初にすべての依存関係を使用して新しい環境をセットアップすることをお勧めします。

pip を使用してDjangoをインストールした場合は、--upgradeまたは-Uフラグを使用できます。


テスト

新しい環境がセットアップされたら、アプリケーションの完全なテストスイートを実行します。 繰り返しになりますが、非推奨の警告をオンにして、テスト出力に表示されるようにすると便利です(manage.py runserverを使用してアプリを手動でテストする場合は、フラグを使用することもできます)。

テストを実行した後、失敗を修正します。 リリースノートを頭に入れておくと、コードをリファクタリングして非推奨の警告を排除することで、Djangoの新機能を活用する良い機会になるかもしれません。


展開

アプリが新しいバージョンのDjangoで動作することを十分に確信できたら、アップグレードしたDjangoプロジェクトをデプロイする準備が整います。

Djangoが提供するキャッシュを使用している場合は、アップグレード後にキャッシュをクリアすることを検討する必要があります。 そうしないと、たとえば、pickle化されたオブジェクトをキャッシュしている場合、これらのオブジェクトがDjangoバージョン間でpickle互換であることが保証されていないため、問題が発生する可能性があります。 過去の非互換性の例は、 cache_page()デコレータを介して直接または間接的にpickle化された HttpResponse オブジェクトをキャッシュすることでした。