Django-mtv開發模式

從著名的MVC模式開始提及

所謂的MVC就是把Web應用分爲模型(M)控制器(C)和視圖(V)三層,他們之間以一種插件式的、鬆耦合的房仍是
鏈接在一塊兒,模型負責業務對象與數據庫的映射(ORM),視圖負責與用戶的交互頁面(頁面),控制器接受用戶輸入條
用模型和視圖完成用戶的請求,其示意圖以下所示:

django的MTV模式的本質和MVC是同樣的,也是爲了各組件間保持鬆耦合關係,只是定義有些不一樣,django的mtv分別是html

  1. M 帶包模型(Model) 負責業務對象和數據庫的關係映射(ORM)
  2. T 表明模板(Template) 負責如何把頁面展現給用戶(html)
  3. V 表明視圖 (View) 負責業務邏輯 並在適當時候調用Mode和Template
  4. 出了以上三層外,還須要一個URL分發器、他的做用是講一個個URL的頁面請求分發給不一樣的View處理,

View在調用相關的Mode和Template,MTV的相應模式以下所示:

  1. web服務器(中間件)收到一個http請求
  2. Django在URLconf裏查找對應的視圖(view)函數來處理http請求
  3. 視圖函數調用相應的數據模型來存儲數據、調用相應的模板向用戶展現頁面
  4. 視圖函數處理結束後返回一個http的相應給web服務器
  5. web 服務器將響應發送給客戶端

這種設計模式關鍵的優點在與各類組都是鬆耦合的額,這樣,每一個有django驅動的web應用都有 着明確的目的,而且可獨立更改而不影響其餘的部分。 好比,開發者更改一個應用程序的URL而不用影響到這個程序底層的實現。設計師能夠更改HTML頁面 的樣式而不用接觸python代碼 數據庫管理員能夠從新命名數據庫表而且只須要更改模型,無需從一大堆文件中進行查找和替換。python

落實到實處 django的MTV模式相對應的python文件以下:

urls.py詳解

URl分發器 (路由配置文件)

URL配置(URLconf)就像django所支持網站的目錄。它在本質是URL模式以及要爲改URL 模式調用的視圖函數之間的映射表。你就是這種方式告訴django,對於這個URL嗲用這段代碼, 對於那個URL調用那段代碼,URL的加載時從配置文件中開始。git

1. urlpatterns 的兩種形式

沒有前綴的狀況,使用的列表(推薦方式) urlpatterns = [ url(r'^hello/$', views.hello), ] 有前綴的狀況,使用patterns過期的方法方法github

from django.conf.urls import url,patterns
from hello import views
urlpatterns = patterns('',url(r'^hello/$', views.hello))
或
from django.conf.urls import patterns
urlpatterns = patterns('hello',url(r'^hello/$', 'views.hello'),)

2. URL模式

urlpatterns =[
    url(正則表方式,view函數,參數,別名,前綴)
]

參數說明:web

  • 一個正則表達式字符串
  • 一個可調用對象,一般爲一個視圖函數或一個指定視圖函數路徑的字符串。
  • 可選的要傳遞給視圖函數的默認參數(字典形式)
  • 一個可選的name參數
  • 路徑前綴

3 URL 分解器 include函數

一般一個URL分解器對應一個URL配置模塊,他能夠包含多個url模式, 也能夠包含多個其餘URL分解器,經過這種包含結構設計,實現django對URL的層級解析。正則表達式

URL分解器是django實現app與項目解耦的關鍵,一般include方法操做的url配置模塊,最終 會被解釋成URL分解器數據庫

預留的問題,爲何admin模塊引入的時候沒有使用include

url(r'^admin/', admin.site.urls),django

URL常見寫法示例 正則表達式

url(r'^test/\d{2}/$',views.test)
url(r'^test/(?P<id>\d{2})/$',views.test) ===>test(id)
url(r'^test2/(?P<id>\d{2})/(?P<key>\w+)/$',views.test) ==》test(id,key)

關於正則表達式的使用能夠參考 建議爬蟲實戰中的正則表達式canvas

相關文章
相關標籤/搜索