谷歌翻譯的,我修正並且添加了一些內容.湊合看吧.
ASGI支持
Django 3.0通過提供對作為ASGI應用程序運行的支持,開始了使Django具有完全異步功能的旅程。
注:ASGI是WSGI的擴展,向下兼容WSGI,克服了WSGI的弱點,支持異步並發.有異步並發需求可以重新在生產環境下進行部署.
這是對我們現有的WSGI支持的補充。Django打算在可預見的將來為這兩者提供支持。但是,異步功能僅對在ASGI下運行的應用程序可用。
除非您想開始嘗試異步代碼,否則無需切換應用程序,但是如果您想了解更多信息,我們有 關於使用ASGI進行部署的文檔。
請注意,作為此更改的副作用,Django現在知道異步事件循環,並將阻止您從異步上下文中調用標記為“async unsafe”的代碼(例如ORM操作)。如果您之前使用的是異步代碼中的Django,則操作不正確可能會觸發它。如果看到SynchronousOnlyOperation
錯誤,請仔細檢查代碼並將所有數據庫操作移至同步子線程中。
PostgreSQL的排斥約束
新增了 ExclusionConstraint
類, 允許在PostgreSQL上添加排除約束。使用Meta.constraints
選項將約束添加到model 。
Filter 表達式
新增了BooleanField
,可以直接在QuerySet
過濾器中使用輸出的表達式,而不必首先注釋,然后針對注釋進行過濾。
在 model field choices中使用枚舉
自定義枚舉類型TextChoices
,IntegerChoices
和Choices
現在作為一個的方式來定義Field.choices
。為文本和整數字段提供了類型TextChoices
和IntegerChoices
類型。在 Choices
類允許定義為其他具體的數據類型兼容的枚舉。這些自定義枚舉類型支持人類可讀的標簽,可以通過枚舉或其成員上的屬性來翻譯和訪問這些標簽。有關更多詳細信息和示例,請參見枚舉類型。
次要功能
django.contrib.admin
- 增加了對
admin_order_field
的ModelAdmin.list_display屬性的
支持。 - 新增的
ModelAdmin.get_inlines()
方法允許根據請求或模型實例指定內聯。 - Select2庫從4.0.3版本升級到4.0.7。 # Select2 是一個非常好用的下拉框插件,支持很多功能。
- jQuery從版本3.3.1升級到版本3.4.1。
django.contrib.auth
- 中的新
reset_url_token
屬性PasswordResetConfirmView
允許指定顯示為密碼重置URL組件的令牌參數。 - 添加了
BaseBackend
類,以簡化身份驗證后端的自定義。 - 添加了
get_user_permissions()
方法以鏡像現有get_group_permissions()
方法。 autocomplete
在用戶名,電子郵件和密碼字段的小部件中添加了HTML 屬性,django.contrib.auth.forms
以更好地與瀏覽器密碼管理器進行交互。createsuperuser
現在,當非交互模式下未提供相應的命令行參數時,現在退回到密碼和必填字段的環境變量。REQUIRED_FIELDS
現在支持ManyToManyField
。- 新
UserManager.with_perm()
方法將返回具有指定權限的用戶。 - PBKDF2密碼哈希器的默認迭代計數從150,000增加到180,000。
django.contrib.gis
- 允許MySQL空間查找功能在實際幾何上運行。以前的支持僅限於邊界框。
- 添加了
GeometryDistance
PostGIS支持的功能。 - 在中增加了對
furlong
單位的 支持Distance
。 - 該
GEOIP_PATH
設置現在支持pathlib.Path
。 - 該
GeoIP2
班現在接受 。pathlib.Path
path
django.contrib.postgres
- 新功能
RangeOperators
有助於避免與一起使用的SQL運算符中的拼寫錯誤RangeField
。 - 新
RangeBoundary
表達式表示范圍邊界。 - new
AddIndexConcurrently
和RemoveIndexConcurrently
class允許CONCURRENTLY
在PostgreSQL上創建和刪除索引。
django.contrib.sessions
- 新
get_session_cookie_age()
方法允許動態指定會話cookie的年齡。
緩存
add_never_cache_headers()
然后never_cache()
將private
指令添加到Cache-Control
標題中。
文件存儲
Storage.get_alternative_name()
如果已經存在帶有上載名稱的文件,則新方法允許自定義生成文件名的算法。
表格
- 表單集可以
can_order
通過設置ordering_widget
屬性或覆蓋來控制在訂購表單時使用的小部件get_ordering_widget()
。
國際
- 增加了
LANGUAGE_COOKIE_HTTPONLY
,LANGUAGE_COOKIE_SAMESITE
和LANGUAGE_COOKIE_SECURE
設置來設置的HttpOnly
,SameSite
以及Secure
對語言的cookie標志。這些設置的默認值保留以前的行為。 - 添加了對烏茲別克語的支持和翻譯。
記錄
- 的新
reporter_class
參數AdminEmailHandler
允許提供一個django.views.debug.ExceptionReporter
子類,以自定義ADMINS
在DEBUG
is 時發送到站點的回溯文本False
。
管理命令
- 新選項允許在搜索要編譯的文件時忽略特定目錄。
compilemessages --ignore
.po
showmigrations --list
現在顯示的--verbosity
是大於等於2的日期時間 。- 在PostgreSQL上,
dbshell
現在支持客戶端TLS證書。 inspectdb
現在,OneToOneField
當外鍵具有唯一或主鍵約束時,它會進行自省。- 新
--skip-checks
選項將在運行命令之前跳過正在運行的系統檢查。 - 在和 選項現在存放在XZ檔案(支持模板,)和LZMA檔案(,)。
startapp --template
startproject --template
.tar.xz
.txz
.tar.lzma
.tlz
型號
-
添加了
Sign
數據庫功能。 -
數據庫功能的新
is_dst
參數Trunc
確定了不存在和不明確的日期時間的處理方式。 -
connection.queries
現在顯示PostgreSQL上的語句。COPY … TO
-
FilePathField
現在接受的可調用對象path
。 -
允許使用對稱的中間表作為自引用
ManyToManyField
。 -
該
name
屬性CheckConstraint
,UniqueConstraint
和Index
現在支持應用標簽和類插值使用'%(app_label)s'
和'%(class)s'
占位符。 -
新
Field.descriptor_class
屬性允許模型字段通過覆蓋其描述符來自定義get和set行為 。 -
添加了
SmallAutoField
,它的行為類似於“AutoField
例外”,只是它只允許某個值(取決於數據庫)下的值。從1
到的值32767
在Django支持的所有數據庫中都是安全的。 -
AutoField
,BigAutoField
以及SmallAutoField
現在從繼承IntegerField
,BigIntegerField
並SmallIntegerField
分別。系統檢查和驗證器現在也已正確繼承。 -
CheckConstraint
現在在MySQL 8.0.16+上受支持。 -
這種新的
allows_group_by_selected_pks_on_model()
方法django.db.backends.base.BaseDatabaseFeatures
允許對子句進行優化, 使其僅需要選定模型的主鍵。默認情況下,僅PostgreSQL上的托管模型支持它。GROUP BY
要為非托管模型啟用僅主鍵優化,您必須對PostgreSQL數據庫引擎進行子類化,並根據需要覆蓋features類方法。有關示例,請參見子類化內置數據庫后端。
GROUP BY
allows_group_by_selected_pks_on_model()
請求和響應
- 允許
HttpResponse
用memoryview
內容初始化 。 - 例如,在Django模板中使用時,
HttpRequest.headers
現在允許使用下划線(例如user_agent
)代替連字符來進行查找。
安全
X_FRAME_OPTIONS
現在默認為'DENY'
。在舊版本中,該X_FRAME_OPTIONS
設置默認為'SAMEORIGIN'
。如果您的網站使用其自身的框架,則需要明確設置它們才能繼續工作。X_FRAME_OPTIONS = 'SAMEORIGIN'
SECURE_CONTENT_TYPE_NOSNIFF
設置現在默認為True
。啟用后SECURE_CONTENT_TYPE_NOSNIFF
,將 在所有尚未SecurityMiddleware
設置的X-Content-Type-Options:nosniff標頭上設置該 標頭。SecurityMiddleware
現在可以發送 Referrer-Policy標頭。
測試
- 新的測試
Client
參數raise_request_exception
允許控制是否應在測試中引發在請求期間引發的異常。該值默認True
為向后兼容。如果是,False
並且發生異常,則測試客戶端將返回500響應,其中包含屬性exc_info
,一個元組提供發生的異常的信息。 - 可以使用新選項通過測試名稱模式選擇要運行的測試和測試用例。
test -k
assertHTMLEqual()
現在,由所使用的HTML比較 將將相同字符引用的文本,字符引用和實體引用視為等效。- Django測試運行器現在支持在支持的瀏覽器上進行硒測試的無頭模式。添加
--headless
選項以啟用此模式。 - Django測試運行器現在支持
--start-at
和--start-after
選項,以從特定的頂級模塊開始運行測試。 - Django測試運行器現在支持
--pdb
在每個錯誤或失敗時生成調試器的選項。