Django 1.10版本已經發布,該版本所給出的新特性包括:對PostgreSQL資料庫的全文檢索索引、Unicode使用者名稱的官方支援和新型的中介軟體。
作為Django軟體基金會的動態語言,該Django的重大發布包括了在django.contrib.postgres.search模組中對資料庫函數調用的功能,這方便了使用PostgreSQL的全文檢索索引引擎。
Django團隊給出了 例子代碼 ,實現對資料庫中某一行資料進行簡單搜尋。代碼如下所示:
>>> Entry.objects.filter(body_text__search='Cheese')
[<Entry: Cheese on Toast recipes>, <Entry: Pizza Recipes>]
“代碼從資料庫的 body_text 域調用一次 to_tsvector 函數,並為檢索詞‘Cheese’調用一次 plainto_tsquery 函數。這兩次函數調用均使用預設的資料庫檢索配置。檢索結果通過對查詢與向量的匹配而得到。為使用該檢索尋找功能,環境設定INSTALLED_APPS中必須包括'django.contrib.postgres'。”
在Django文檔中,可以查閱到使用 SearchVector 、 SearchQuery 和 SearchRank 類的例子, 詳細內容參見這裡 。
Django 1.10版本的新特性還包括 引入 了一種新型的中介軟體,該中介軟體所解決的問題是,“在 DEP 0005 改進建議中提出的舊式中介軟體中缺乏嚴格意義上的請求和響應層的問題”。
作為一種“鉤入Django請求及響應處理的架構”,Django的新型中介軟體提供了django.utils.deprecation.MiddlewareMixin模組,用於建立與 MIDDLEWARE和MIDDLEWARE_CLASSES相容的中介軟體類。
按Django文檔所述,“該混合類型模組提供了 __init__() 方法,接受 get_response 作為選擇性參數,並將該參數儲存在 self.get_response 中”。對此方法詳解如下:
__call__()方法:
調用self.process_request(request) (如果已定義了);
調用self.get_response(request),從後續的中介軟體和視圖中擷取響應;
調用self.process_response(request, response) (如果已定義了);
返迴響應。
在網路上關於Django最新發行的新聞得到了很多的肯定,但也一些評論提出了對 Channels項目 的需求。
在HackerNew網站對 “Django 1.10發布了” 的討論中,使用者 Tom Forbes 是這樣 評論 的:“Channels項目真是可恥呀,我發現新版本中並沒有包含這個項目”。而使用者 ubernostrum 是這樣 回複 的:“Channel項目將會取得成功的。它只是尚未準備好在1.10版本中發布。希望它會在1.11版本中準備好,並將在Django中啟用。”
使用者 passiveincomelg 給出了不太確定的 說法 :“我對Channel的態度有些矛盾。一方面,使用它所能做的事情是很酷的,它的設計十分聰明地避免了重寫所有Django程式為非同步。另一方面,為實現這個Go和Erlang所輕易實現的功能,還有要去完成多少的惡作劇,這真是令人抓狂。”
Django 1.10版還包括一些 不向後相容的改進 。而也有一些特性在達到其棄用周期後, 也已經被棄用 。
這些被棄用的特性包括:在LOGIN_URL和LOGIN_REDIRECT_URL中設定使用可帶點的Python路徑;django.core.context_processors、django.db.models.sql.aggregates和django.contrib.gis.db.models.sql.aggregates等模組;為使用SQLCompiler的quote_name_unless_alias方法而支援用別名方式直接調用SQLCompiler;以及其它一些私人API。
作為一種用Python編寫的自由開源Web應用程式框架,Django以三句版BSD協議發布,它歡迎來自InfoQ社區的貢獻。
任何尋求改進和對Django有所貢獻的人,可以訪問 docs.djangoproject.com/en/dev/internals/contributing/ .