Django3.バージョン1の説明
3746 ワード
Django 3.1は2020年8月4日にリリースされ、Python 3.6、3.7、3.8以上のバージョンをサポートします.
3.1からDjangoは、次のような要求プロセスの全非同期化をサポートします.非同期ビュー 非同期ミドルウェア 非同期のテストとクライアント 非同期ビューを作成するには、
または次の例を示します.
注意:非同期機能WSDiとASGIモード を同時にサポート WSGIモードでは、非同期機能を使用するとパフォーマンスが損なわれる は非同期/同期ビューまたはミドルウェアを混用することができ、Djangoはコンテキスト を自動的に処理する.では、同期モードを主に使用することを推奨し、必要なシーンでは非同期機能を使用します. DjangoのORMシステム、キャッシュレイヤ、およびその他の長時間ネットワーク/IO呼び出しを必要とするコードは、依然として非同期アクセスをサポートしておらず、将来のバージョンでは徐々にサポートされます. 非同期機能は、同期コードの実行速度に影響を及ぼさず、既存のプロジェクトにも明らかな影響を及ぼさない.
Django3.1
このフィールドタイプは、前例のように、PostgresSQLのみでサポートされていた高度なクエリーの使用をサポートします.
authフレームワークの
既存のプロジェクトでこのモデルを継承している場合は、古いDjangoバージョンから3.1にアップグレードすると、手動で移行ファイルを生成し、移行操作を実行する必要があります.
長さ30の制限を維持したい場合は、フォームをカスタマイズできます.
まず、既存のフォームを継承し、
adminにdjangoを追加する.contrib.admin.EmptyFiledListFilterは、空のフィールドをフィルタするための である. authにおけるPBKDF 2アルゴリズムの反復回数は180000から216000 に増加した. authには、Django 4の代わりに、パスワードリセットリンクの生存期間秒数をカスタマイズするための authの多くの場所でSHA-256アルゴリズム が使用され始めた. をサポートしている. をサポートするようになりました. のような新しい時間フォーマットをサポートする.現在、 が利用可能である. を反復できるようになりました. adminバックグラウンドインタフェースは古いIEブラウザ をサポートしなくなった. MariaDB最低需要10.2バージョン
非同期ビューとミドルウェアのサポート
3.1からDjangoは、次のような要求プロセスの全非同期化をサポートします.
async
キーを使用します.import datetime
from django.http import HttpResponse
async def current_datetime(request):
now = datetime.datetime.now()
html = 'It is now %s. from https://www.liujiangblog.com' % now
return HttpResponse(html)
または次の例を示します.
async def my_view(request):
await asyncio.sleep(0.5)
return HttpResponse('Hello, async world!')
注意:
JSOnFieldタイプを追加
Django3.1
models.JSONField
とforms.JSONField
の2つのフィールドタイプ、すなわち文字通りJSONデータ型が追加され、サポートされているすべてのデータベースのバックエンドに使用でき、エンコーダとデコーダをカスタマイズできます.class ContactInfo(models.Model):
data = models.JSONField()
# ORM API
ContactInfo.objects.create(data={
'name': 'John',
'cities': ['London', 'Cambridge'],
'pets': {'dogs': ['Rufus', 'Meg']},
})
ContactInfo.objects.filter(
data__name='John',
data__pets__has_key='dogs',
data__cities__contains='London',
).delete()
このフィールドタイプは、前例のように、PostgresSQLのみでサポートされていた高度なクエリーの使用をサポートします.
first_name長増加
authフレームワークの
AbstractUser
モデルのfirst_name
フィールドの最大長は150に増加した.Djangoはこのために特に移行ファイルを追加しました.既存のプロジェクトでこのモデルを継承している場合は、古いDjangoバージョンから3.1にアップグレードすると、手動で移行ファイルを生成し、移行操作を実行する必要があります.
長さ30の制限を維持したい場合は、フォームをカスタマイズできます.
まず、既存のフォームを継承し、
first_name
フィールドを書き換えます.from django import forms
from django.contrib.auth.forms import UserChangeForm
class MyUserChangeForm(UserChangeForm):
first_name = forms.CharField(max_length=30, required=False)
first_name
を入力する必要があるページでは、adminなどのMyUserChangeForm
を使用します.from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
class MyUserAdmin(UserAdmin):
form = MyUserChangeForm
admin.site.unregister(User)
admin.site.register(User, MyUserAdmin)
ちょっとした変更
PASSWORD_RESET_TIMEOUT
の構成項目が追加されました.0で廃棄されたPASSWORD_RESET_TIMEOUT_DAYS
の構成項目.django.contrib.humanize
人間化intword
テンプレートフィルタは現在、負の整数STATICFILES_DIRS
およびEMAIL_FILE_PATH
構成は、pathlib.Path
ライブラリdjango.forms.DateTimeField
は現在、2019-10-10T06:47
、2019-10-10T06:47:23+04:00
、または2019-10-10T06:47:23Z
ALLOW_HOSTS
リストが空でDEBUG=True
である場合、localhost
のサブドメイン名、例えばstatic.localhost
include
テンプレートラベルは、テンプレート名