前言
Django是一個開放源代碼的Web應用框架,由Python寫成,最初用於管理勞倫斯出版集團旗下的一些以新聞內容為主的網站,即CMS(內容管理系統)軟件,於2005年7月在BSD許可證下發布,這套框架是以比利時的吉普賽爵士吉他手Django Reinhardt
來命名的。Django
采用了MTV
的框架模式,即模型Model
、模板Template
和視圖(Views)
,三者之間各自負責不同的職責。
- 模型:數據存取層,處理與數據相關的所有事物,例如如何存取、如何驗證有效性、包含哪些行為以及數據之間的關系等。
- 模板:表現層,處理與表現相關的決定,例如如何在頁面或其他類型的文檔中進行顯示。
- 視圖:業務邏輯層,存取模型及調取恰當模板的相關邏輯,模型與模板的橋梁
Django的主要目的是簡便、快速地開發數據庫驅動的網站。它強調代碼復用,多個組件可以很方便地以插件形式服務於整個框架。Django有許多功能強大的第三方插件,可以很方便地開發出自己的工具包,這使得Django具有很強的可擴展性。此外,Django還強調快速開發和DRY(Do Not Repeat Yourself)
原則。Django基於MTV
的設計十分優美,其具有以下特點:
- 對象映射關系(Object Relational Mapping, ORM):通過定義映射類來構建數據模型,將模型與關系數據庫連接起來,使用ORM框架內置的數據庫接口可實現復雜的數據操作。
- URL設計:開發者可以設計任意的URL(網站地址),而且還支持使用正則表達式設計
- 模板系統:提供可擴展的模板語言,模板之間具有可繼承性
- 表單處理:可以生成各種表單模型,而且表單具有有效性檢驗功能
- Cache系統:完善的緩存系統,可支持多種緩存方式
- Auth認證系統:提供用戶認證、權限設置和用戶組功能,功能擴展性強
- 國際化:內置國際化系統,方便開發出多種語言的網站
- Admin后台系統:內置Admin后台管理系統,系統擴展性強
Django2的新特性
- 簡化URL路由語法:使得
Django.urls.path()
方法的語法更簡單。功能的導入由模塊Django.urls
實現,如from Django.urls import include,path,re_path
- Admin后台系統:支持主流移動設備並新增屬性
ModelAdmin.autocomplete_fields
和方法ModelAdmin,get_autocomplete_fields()
- 用戶認證:PBKDF2密碼哈希默認的迭代次數從36000增加到100000
- Cache(緩存):
cache.set_many()
現在返回一個列表,包含插入失敗的鍵值 - 視圖類:
ContextMixin,extra_context
屬性允許在View.as_view()
中添加上下文 - Pagination(分頁):增加Paginator.get_page()`,可以處理各種非法頁面參數,防止異常
- Templates(模板):提高
Engine.get_default()
在第三方模塊的用途 - Vaildators(驗證器):不允許
CharField
及其子類的表單輸入為空 - File Storage(文件存儲):
File.open()
可以用於上下文管理器,例如with file open() as f
- 連接MySQL不再使用mysqldb模塊,改為
mysqlclient
,兩者之間並沒有太大的使用差異 - Management Commands(管理命令):
inspectdb
將MySQL
的無符號整數視作PositiveIntegerField
或者PositiveSmallIntegerField
字段類型