Djangoの3.0リリースでは、このバージョンでは、非同期機能をサポートするために開始されなければならない最も顕著なそのうちのいくつかの新機能をもたらします。
以前、我々は報告し、草案は、することを提案しているDjangoのサポートは、非同期にします。HTTPミドルウェアおよびORMを見るために集まった、開発者は、Pythonの同期のためのサポートを維持しながら、ジャンゴでの非同期のサポートを追加したい、と完全な下位互換性です。
ビジョンは、最終的に、などのセッション、認証、ORMとハンドラを含むジャンゴの遮断部のほとんどを置き換えます、非同期のネイティブサポート。同期APIは、そのうちのいくつかは、最終的に同期ラッパーネイティブ非同期コードに変換されます、存在し続けると、完全にサポートされています。
ASGI Djangoのモデルは、非同期のネイティブアプリケーションとして実行され、元のWSGIモデルは、非同期処理層が同期サーバと互換性があるように、それぞれのDjango単一イベントループを呼び出す周りに実行されます。
この変換処理では、各プロパティは、以下の3つの実装段階を受けます。
- 同期専用の、唯一の現在の状況である、同期をサポート
- 同期ネイティブ、ネイティブ同期、非同期のラッパーとの間
- 同期ベルトラッパに非同期ネイティブ、ネイティブ非同期
Djangoは徐々に非同期機能を持っているので、Djangoの3.0スタートランニングASGIは、アプリケーションのサポートを提供しています。この変更を行った後、Djangoは今、非同期イベントループを認知し、「非同期安全でない」のコード(たとえば、オペレーティングORM)としてマークされた非同期呼び出し、以前に使用した開発者は、非同期コードがある場合は、あなたがかもしれないからコンテキストを防ぐことができますそれがトリガされます。あなたはSynchronousOnlyOperationエラーが表示された場合は、ダブルチェックすることができ、コードとデータベース操作を同期サブスレッドに。
他の態様、Djangoは今MariaDB 10.1以降をサポートしています。ExclusionConstraintクラスは、PostgreSQLの新しい排他制約を追加することができます;のBooleanField出力式は、今のノートの最初のコメントを有する、次いで、濾過せずに、クエリセットフィルタで直接使用することができます。カスタムタイプTextChoicesを列挙、IntegerChoices選択肢と方法についてField.choicesを定義するために使用することができます。
いくつかのマイナーな変更、詳細ビューの更新もあります。
なお、Djangoの3.0のサポートPythonの3.6,3.7および3.8、Djangoの2.2.xのシリーズでは、Python 3.5シリーズをサポートする最後のものです。関係者はまた、先行2.2ジャンゴへのすべてのバージョンのサポートを放棄するサードパーティ製アプリケーションの作者を示唆しました。