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