DjangoURL分發(fā)系統(tǒng)使用了正則表達(dá)式配置模塊,它可以將URL字符串模式映射為Python方法views。這個(gè)系統(tǒng)允許URL與底層代碼完全脫節(jié),從而實(shí)現(xiàn)最大的控制和靈活性。
urls.py模塊被創(chuàng)建和定義成URL配置的默認(rèn)起點(diǎn)(通過settings.py模塊中的ROOT_URLCONF值)。URL配置文件的惟一要求是必須包含一個(gè)定義模式urlpatterns的對(duì)象。
這個(gè)職位公告板應(yīng)用程序會(huì)在啟動(dòng)時(shí)打開一個(gè)索引和一個(gè)詳細(xì)視圖,它們可以通過以下的URL映射進(jìn)行訪問:
/jobs索引視圖:顯示最近的10個(gè)職位
/jobs/1詳細(xì)視圖:顯示ID為1的職位信息
這兩個(gè)視圖(索引視圖和詳細(xì)視圖)都是在這個(gè)jobs應(yīng)用程序的views.py模塊中實(shí)現(xiàn)的。在項(xiàng)目的urls.py文件中實(shí)現(xiàn)這種配置看起來如下所示:
清單21.在djproject/urls.py中實(shí)現(xiàn)視圖的配置
8fromdjango.conf.urls.defaultsimport*
urlpatterns=patterns('',
(r'^admin/',include('django.contrib.admin.urls.admin')),
(r'^jobs/$','djproject.jobs.views.index'),
(r'^jobs/(?Pd+)/$','djproject.jobs.views.detail'),
)
注意部分,這在后面非常重要。
最佳實(shí)踐是提取出應(yīng)用程序特有的URL模式,并將它們放入應(yīng)用程序自身中。這樣可以取消應(yīng)用程序與項(xiàng)目的耦合限制,從而更好地實(shí)現(xiàn)重用。jobs使用的應(yīng)用程序級(jí)的URL配置文件如下所示:
清單22.應(yīng)用程序級(jí)的URL配置文件urls.py
6fromdjango.conf.urls.defaultsimport*
urlpatterns=patterns('',
(r'^$','djproject.jobs.views.index'),
(r'^(?Pd+)/$','djproject.jobs.views.detail'),
)
由于view方法現(xiàn)在都是來自同一個(gè)模塊,因此第一個(gè)參數(shù)可以使用這個(gè)模塊的根名稱來指定djproject.jobs.views,Django會(huì)使用它來查找index方法和detail方法:
清單23.jobs/urls.py:查找index和detail方法
6fromdjango.conf.urls.defaultsimport*
urlpatterns=patterns('djproject.jobs.views',
(r'^$','index'),
(r'^(?Pd+)/$','detail'),
)
嘗試上面的jobsURL會(huì)返回到這個(gè)項(xiàng)目中,因?yàn)樗鼈兪鞘褂胕nclude函數(shù)將其作為一個(gè)整體來實(shí)現(xiàn)的。應(yīng)用程序級(jí)的URL被綁定到下面的/jobs部分:
清單24.djproject/urls.py:將URL送回該項(xiàng)目
6fromdjango.conf.urls.defaultsimport*
urlpatterns=patterns('',
(r'^admin/',include('django.contrib.admin.urls.admin')),
(r'^jobs/',include('djproject.jobs.urls')),
)
如果現(xiàn)在嘗試使用測(cè)試服務(wù)器來訪問索引頁,會(huì)得到一個(gè)錯(cuò)誤,因?yàn)檎谡{(diào)用的視圖(djproject.jobs.views.index)不存在。
以上內(nèi)容為大家介紹了python基礎(chǔ)入門之設(shè)計(jì)URL方案,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://m.2667701.com/