河南省中緯測繪規(guī)劃信息工程有限公司
Henan Zhongwei Surveying and Mapping Planning Information Engineering Co., Ltd.

Django軟件開發(fā)框架簡介

發(fā)表時間:2019-12-21 11:07作者:賈賀祥

在洛陽市自然資源局市級調(diào)查成果分析與共享平臺開發(fā)中,使用了Django作為本平臺的開發(fā)框架,現(xiàn)將本框架做一簡要介紹,為公司web開發(fā)提供一種思路和選擇。

1 簡介

Django是高水準(zhǔn)的Python編程語言驅(qū)動的一個開源模型.視圖,控制器風(fēng)格的Web應(yīng)用程序框架,它起源于開源社區(qū)。使用這種架構(gòu),程序員可以方便、快捷地創(chuàng)建高品質(zhì)、易維護、數(shù)據(jù)庫驅(qū)動的應(yīng)用程序。這也正是OpenStack的Horizon組件采用這種架構(gòu)進行設(shè)計的主要原因。另外,在Django框架中,還包含許多功能強大的第三方插件,使得Django具有較強的可擴展性。Django 項目源自一個在線新聞 Web 站點,于 2005 年以開源的形式被釋放出來。Django 框架的核心組件有:

(1)用于創(chuàng)建模型的對象關(guān)系映射;

(2)為最終用戶設(shè)計較好的管理界面;

(3)URL 設(shè)計;

(4)設(shè)計者友好的模板語言;

(5)緩存系統(tǒng)。

2 架構(gòu)

Django已經(jīng)成為web開發(fā)者的首選框架,是一個遵循 MVC 設(shè)計模式的框架。MVC是Model、View、Controller三個單詞的簡寫,分別代表模型、視圖、控制器。Django其實也是一個MTV 的設(shè)計模式。MTV是Model、Template、View三個單詞的簡寫,分別代表模型、模版、視圖 [3]   。但是在Django中,控制器接受用戶輸入的部分由框架自行處理,所以 Django 里更關(guān)注的是模型(Model)、模板(Template)和視圖(Views),稱為 MTV模式。它們各自的職責(zé)如下:

層次

職責(zé)

模型(Model),即數(shù)據(jù)存取層

處理與數(shù)據(jù)相關(guān)的所有事務(wù):如何存取、如何驗證有效性、包含哪些行為以及數(shù)據(jù)之間的關(guān)系等。

模板(Template),即表現(xiàn)層

處理與表現(xiàn)相關(guān)的決定:如何在頁面或其他類型文檔中進行顯示。

視圖(View),即業(yè)務(wù)邏輯層

存取模型及調(diào)取恰當(dāng)模板的相關(guān)邏輯。模型與模板的橋梁。

從以上表述可以看出Django視圖不處理用戶輸入,而僅僅決定要展現(xiàn)哪些數(shù)據(jù)給用戶,而Django 模板 僅僅決定如何展現(xiàn)Django視圖指定的數(shù)據(jù)?;蛘哒f, Django將MVC中的視圖進一步分解為 Django視圖 和 Django模板兩個部分,分別決定 “展現(xiàn)哪些數(shù)據(jù)” 和 “如何展現(xiàn)”,使得Django的模板可以根據(jù)需要隨時替換,而不僅僅限制于內(nèi)置的模板。

至于MVC控制器部分,由Django框架的URLconf來實現(xiàn)。URLconf機制是使用正則表達式匹配URL,然后調(diào)用合適的Python函數(shù)。URLconf對于URL的規(guī)則沒有任何限制,你完全可以設(shè)計成任意的URL風(fēng)格,不管是傳統(tǒng)的,RESTful的,或者是另類的。框架把控制層給封裝了,無非與數(shù)據(jù)交互這層都是數(shù)據(jù)庫表的讀,寫,刪除,更新的操作。在寫程序的時候,只要調(diào)用相應(yīng)的方法就行了,感覺很方便。程序員把控制層?xùn)|西交給Django自動完成了。 只需要編寫非常少的代碼完成很多的事情。所以,它比MVC框架考慮的問題要深一步,因為我們程序員大都在寫控制層的程序。這個工作交給了框架,僅需寫很少的調(diào)用代碼,大大提高了工作效率。

3應(yīng)用

洛陽市自然資源局市級調(diào)查成果分析與共享平臺使用了Django作為本平臺的開發(fā)框架,本平臺的模塊如下所示:

在Django中一個項目有很多個應(yīng)用組成,每一個應(yīng)用完成一個功能模塊,在開發(fā)中對所有功能模塊建立一個應(yīng)用。本項目的具體開發(fā)框架如下: