Python3-Django框架學習一
【轉-百度詞條】https://baike.baidu.com/item/django/61531?fr=aladdin
django
-Python Web 框架
Django是一個開放原始碼的Web應用框架,由Python寫成。採用了MVC的框架模式,即模型M,檢視V和控制器C。它最初是被開發來用於管理勞倫斯出版集團旗下的一些以新聞內容為主的網站的,即是CMS(內容管理系統)軟體。並於2005年7月在BSD許可證下發布。這套框架是以比利時的吉普賽爵士吉他手Django Reinhardt來命名的。
框架介紹
Django 專案是一個Python定製框架,它源自一個線上新聞 Web 站點,於 2005 年以開源的形式被釋放出來。Django 框架的核心元件有:
- 用於建立模型的物件關係對映(ORM)
- 為終端使用者設計的完美管理介面
- 一流的 URL 設計
- 設計者友好的模板語言
- 快取系統。
Django(發音:[`dʒæŋɡəʊ]) 是用python語言寫的開源web開發框架(open source web framework),它鼓勵快速開發,並遵循MVC設計。Django遵守BSD版權,初次釋出於2005年7月, 並於2008年9月釋出了第一個正式版本1.0 。
Django 根據比利時的爵士音樂家Django Reinhardt命名,他是一個吉普賽人,主要以演奏吉它為主,還演奏過小提琴等。
由於Django在近年來的迅速發展,應用越來越廣泛,被著名IT開發雜誌SD Times評選為2013 SD Times 100,位列“API、庫和框架”分類第6位,被認為是該領域的佼佼者 。
架構設計
Django是一個基於MVC構造的框架。但是在Django中,控制器接受使用者輸入的部分由框架自行處理,所以 Django 裡更關注的是模型(Model)、模板(Template)和檢視(Views),稱為 MTV模式。它們各自的職責如下:
|層次|職責|
|模型(Model),即資料存取層|處理與資料相關的所有事務: 如何存取、如何驗證有效性、包含哪些行為以及資料之間的關係等。|
|模板(Template),即業務邏輯層|處理與表現相關的決定: 如何在頁面或其他型別文件中進行顯示。|
|檢視(View),即表現層|存取模型及調取恰當模板的相關邏輯。模型與模板的橋樑。|
從以上表述可以看出Django 檢視不處理使用者輸入,而僅僅決定要展現哪些資料給使用者,而Django 模板 僅僅決定如何展現Django檢視指定的資料。或者說, Django將MVC中的檢視進一步分解為 Django檢視 和 Django模板兩個部分,分別決定 “展現哪些資料” 和 “如何展現”,使得Django的模板可以根據需要隨時替換,而不僅僅限制於內建的模板。
至於MVC控制器部分,由Django框架的URLconf來實現。URLconf機制是使用正規表示式匹配URL,然後呼叫合適的Python函式。URLconf對於URL的規則沒有任何限制,你完全可以設計成任意的URL風格,不管是傳統的,RESTful的,或者是另類的。框架把控制層給封裝了,無非與資料互動這層都是資料庫表的讀,寫,刪除,更新的操作。在寫程式的時候,只要呼叫相應的方法就行了,感覺很方便。程式設計師把控制層東西交給Django自動完成了。 只需要編寫非常少的程式碼完成很多的事情。所以,它比MVC框架考慮的問題要深一步,因為我們程式設計師大都在寫控制層的程式。現在這個工作交給了框架,僅需寫很少的呼叫程式碼,大大提高了工作效率。
設計哲學
Django的主要目的是簡便、快速的開發資料庫驅動的網站。它強調程式碼複用,多個元件可以很方便的以“外掛”形式服務於整個框架,Django有許多功能強大的第三方外掛,你甚至可以很方便的開發出自己的工具包。這使得Django具有很強的可擴充套件性。它還強調快速開發和DRY(Do Not Repeat Yourself)原則。
Django基於MVC的設計十分優美:
物件關係對映 (ORM,object-relational mapping):以Python類形式定義你的資料模型,ORM將模型與關聯式資料庫連線起來,你將得到一個非常容易使用的資料庫API,同時你也可以在Django中使用原始的SQL語句。
URL 分派:使用正規表示式匹配URL,你可以設計任意的URL,沒有框架的特定限定。像你喜歡的一樣靈活。
模版系統:使用Django強大而可擴充套件的模板語言,可以分隔設計、內容和Python程式碼。並且具有可繼承性。
表單處理:你可以方便的生成各種表單模型,實現表單的有效性檢驗。可以方便的從你定義的模型例項生成相應的表單。
Cache系統:可以掛在記憶體緩衝或其它的框架實現超級緩衝 -- 實現你所需要的粒度。
會話(session),使用者登入與許可權檢查,快速開發使用者會話功能。
國際化:內建國際化系統,方便開發出多種語言的網站。
自動化的管理介面:不需要你花大量的工作來建立人員管理和更新內容。Django自帶一個ADMIN site,類似於內容管理系統
工作機制
1.用manage .py runserver 啟動Django伺服器時就載入了在同一目錄下的settings .py。該檔案包含了專案中的配置資訊,如前面講的URLConf等,其中最重要的配置就是ROOT_URLCONF,它告訴Django哪個Python模組應該用作本站的URLConf,預設的是urls .py
工作機制
2.當訪問url的時候,Django會根據ROOT_URLCONF的設定來裝載URLConf。
3.然後按順序逐個匹配URLConf裡的URLpatterns。如果找到則會呼叫相關聯的檢視函式,並把HttpRequest物件作為第一個引數(通常是request)
4.最後該view函式負責返回一個HttpResponse物件。
部署
Django可以執行在Apache,Nginx上,也可以執行在支援WSGI,FastCGI的伺服器上。支援多種資料庫,已經支援Postgresql,MySql, Sqlite3,Oracle。Google App Engine也支援Django的某些部分,國內支援的平臺有(SAE)Sina App Engine,(BAE)百度應用引擎。
相關文章
- node nest 框架學習(一)框架
- 駁 《駁 《駁 《駁 《停止學習框架》》》》、《駁 《駁 《停止學習框架》》》、《駁 《停止學習框架》》、《停止學習框架》框架
- 深度學習學習框架深度學習框架
- 框架學習| Retrofit2.x(一)框架
- 深入學習Spring框架(一)- 入門Spring框架
- [Bootstrap 5 學習記錄](一)搭建框架boot框架
- Hibernate框架學習框架
- OS 學習框架框架
- PySpider框架學習IDE框架
- Httprunner框架學習HTTP框架
- 停止學習框架框架
- Koa框架學習框架
- 一起學習SSM框架之SpringMVC(五)SSM框架SpringMVC
- 如何學習一門程式語言或框架框架
- Netty 框架學習 —— 第一個 Netty 應用Netty框架
- 深度學習框架Pytorch學習筆記深度學習框架PyTorch筆記
- JDK動態代理筆記,學習框架必備知識,學習框架之前先學一下這個JDK筆記框架
- 駁 《停止學習框架》框架
- Hugo-框架學習Go框架
- RPC框架-hessian學習RPC框架
- Java集合框架學習Java框架
- 日誌框架學習框架
- 新一代web框架Koa原始碼學習Web框架原始碼
- Keras vs PyTorch:誰是「第一」深度學習框架?KerasPyTorch深度學習框架
- Spring框架學習筆記(一):官方文件介紹,IoC與AOP概念學習Spring框架筆記
- Netty 框架學習 —— 編解碼器框架Netty框架
- 訓推一體,動靜合一:深度學習框架「天元」出世深度學習框架
- Android之Mina框架學習Android框架
- Okio 框架原始碼學習框架原始碼
- Zookeeper學習——基礎框架框架
- Dubbo框架學習總結框架
- dubbo框架設計學習框架
- Bootstrap框架:學習筆記boot框架筆記
- MYSQL學習(二) --MYSQL框架MySql框架
- Mybatis框架 入門學習MyBatis框架
- 深度學習之Tensorflow框架深度學習框架
- 駁 《駁 《停止學習框架》》框架
- Netty 框架學習 —— 引導Netty框架