您好,登錄后才能下訂單哦!
Django2.2版本都有哪些新特性?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
2019年4月1日,Django官方如期發布了2.2版本,這是一個LST版本,將持續維護和安全更新到2022年4月,也就是說至少有3年的生命周期,所以這是一個可以長期使用的版本。上一個LST版本Django1.11將在2020年4月停止維護。
在這里不得不吐糟一下Django的版本升級路線,版本號提升得太快了!!2.2之后就是3.0,并且3.0會在2019年12月份正式發布,這給一些初學者或者小公司帶來太多的困惑,不知道該學或者該用哪個版本了。個人建議Python2.7沒得選,只能使用Django1.11版本。Python3.x的,直接選最新版本或者最近的LST版本,差別不大。
2.2版本依然包含了一些新特新,和一些對前期版本不兼容的說明。
Python兼容性
Django2.2支持Python3.5、3.6和3.7。
新特性
約束
新的CheckConstraint和UniqueConstraint類現在開始支持自定義數據庫約束,通過使用Meta.constraints選項。
小特性
1. django.contrib.admin
為TabularInline添加了列頭的CSS類
2. django.contrib.auth
HttpRequest將被作為第一個位置參數傳遞給RemoteUserBackend.configure_user()方法。
3. django.contrib.gis
Envelope函數開始支持Oracle。 coveredby和covers查詢現在支持SpatiaLite 不再支持GDAL1.9和1.10
4. django.contrib.staticfiles
為collectstatic --ignore選項添加路由,以支持類似/vendor/*.js的模式
5. Database backends
為SQLite上的QuerySet.iterator()添加輸出流
6. Generic Views
新的View.setup鉤子將在調用dispatch()方法之前初始化視圖屬性。
7. Internationalization
現在支持亞美尼亞語言
8. Management Commands
新的選項--force-color強制對輸出添加顏色inspectdb命令將為PostgreSQL數據庫的外部表創建模型inspectdb --include-views將為Oracle和PostgreSQL的物化視圖創建模型inspectdb --include-partitions將為PostgreSQL的分區表創建模型。在Oracle和PostgreSQL上inspectdb命令將內省DurationField字段類型,在SQLite上內省AutoField字段類型。在Oracle中,dbshell將被rlwrap包裝起來。rlwrap提供一個命令歷史記錄和鍵盤輸入編輯功能。新的makemigrations --no-header選項可以在生成migration文件的時候避免寫入頭部注釋。runserver命令現在可以使用Watchman插件,用于提高監視大量修改文件的性能。并且不再支持pyinotify插件。
9. Migrations
新的migrate --plan選項將打印出遷移操作的列表NoneType現在可以在migrations中序列化了現在可以為migrations注冊自定義的序列化器了
10. Models
為PostgreSQL ,新增Index.opclasses類通過Index.condition,支持分區索引新增NullIf和Reverse數據庫函數為QuerySet.bulk_create()函數新增ignore_conflicts參數,此參數如果設置為True,將忽略在添加數據行時的錯誤。新增ExtractIsoYear函數新增QuerySet.bulk_update()方法,提高批量更新指定字段的效率對于Model.save()、QuerySet.update()和Model.delete()等單獨的操作,Django將不再啟動一個事務,這有助于提高自動提交數據庫操作的性能SQLite現在支持StdDev和Variance函數Aggregate類現在開始支持DISTINCT聚合操作RelatedManager.add()、create()、remove()、set()、get_or_create()、update_or_create() 等方法現在支持多對多關系。SQLite現在要求最低版本是3.8.3mysqlclient現在要求最低版本是1.3.13
11. Requests and Responses
新增HttpRequest.headers,可以快速地訪問請求的頭部信息
12. URLs
新增的ResolverMatch.route屬性保存了匹配的URL模式的路由
13. Validators
MaxValueValidator、MinValueValidator、MinLengthValidator和MaxLengthValidator 現在可以接收一個可調用的limit_value參數值。
2.2版本中向后不兼容的地方
Admin actions的繼承方式發生變化
原來是:
from django.contrib import admin class BaseAdmin(admin.ModelAdmin): actions = ['a']class SubAdmin(BaseAdmin): actions = ['b']
在過去,SubAdmin將同時具有'a'和'b'動作,這其實不符合Python繼承語法的,因為actions屬性被重寫了。
現在,Django2.2將上面的做法改變成更符合Python繼承機制,所以要達到上面目的的話,我們需要修改成下面的做法:
class SubAdmin(BaseAdmin): actions = BaseAdmin.actions + ['b']
cached_property語法發生改變
在過去,我們都是這么使用alias的:
from django.utils.functional import cached_propertyclass A: @cached_property def base(self): return ... alias = base
在Python3.6之后,這可能會導致TypeError,所以現在修改成下面的做法:
from django.utils.functional import cached_propertyimport operatorclass A: @cached_property def base(self): return ... alias = property(operator.attrgetter('base'))
總結:2.2其實沒啥新東西!
最后附上Django的版本路線圖和生命周期圖:
Django的版本號提高得太快我已經無力吐槽了。2.2之后就是3.0,這是幾個意思?
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。