url配置(urlconf)就像django 所支撐**的目錄。它的本質是url與要為該url呼叫的檢視函式之間的對映表;你就是以這種方式告訴django,對於客戶端發來的某個url呼叫哪一段邏輯**對應執行。
from django.conf.urls importurlfrom . import
views
urlpatterns =[
url(r
'^articles/2003/$
', views.special_case_2003),
url(r
'^articles/([0-9])/$
', views.year_archive),
url(r
'^articles/([0-9])/([0-9])/$
', views.month_archive),
url(r
'^articles/([0-9])/([0-9])/([0-9]+)/$
', views.article_detail),
]
注意:示例:
'''一些請求的例子:
/articles/2005/03/ 請求將匹配列表中的第三個模式。django 將呼叫函式views.month_archive(request, '2005', '03')。
/articles/2005/3/ 不匹配任何url 模式,因為列表中的第三個模式要求月份應該是兩個數字。
/articles/2003/ 將匹配列表中的第乙個模式不是第二個,因為模式按順序匹配,第乙個會首先測試是否匹配。請像這樣自由插入一些特殊的情況來探測匹配的次序。
/articles/2003 不匹配任何乙個模式,因為每個模式要求url 以乙個反斜線結尾。
/articles/2003/03/03/ 將匹配最後乙個模式。django 將呼叫函式views.article_detail(request, '2003', '03', '03')。
'''
上面的示例使用簡單的、沒有命名的正規表示式組(通過圓括號)來捕獲url 中的值並以位置 引數傳遞給檢視。在更高階的用法中,可以使用命名的正規表示式組來捕獲url 中的值並以關鍵字 引數傳遞給檢視。
在python 正規表示式中,命名正規表示式組的語法是(?ppattern)
,其中name
是組的名稱,pattern
是要匹配的模式。
下面是以上urlconf 使用命名組的重寫:
from django.conf.urls importurlfrom . import
views
urlpatterns =[
url(r
'^articles/2003/$
', views.special_case_2003),
url(r
'^articles/(?p[0-9])/$
', views.year_archive),
url(r
'^articles/(?p[0-9])/(?p[0-9])/$
', views.month_archive),
url(r
'^articles/(?p[0-9])/(?p[0-9])/(?p[0-9])/$
', views.article_detail),
]
這個實現與前面的示例完全相同,只有乙個細微的差別:捕獲的值作為關鍵字引數而不是位置引數傳遞給檢視函式。例如:
'''/articles/2005/03/ 請求將呼叫views.month_archive(request, year='2005', month='03')函式,而不是views.month_archive(request, '2005', '03')。
/articles/2003/03/03/ 請求將呼叫函式views.article_detail(request, year='2003', month='03', day='03')。
'''
在實際應用中,這意味你的urlconf 會更加明晰且不容易產生引數順序問題的錯誤 —— 你可以在你的檢視函式定義中重新安排引數的順序。當然,這些好處是以簡潔為代價;
'''at any point, your urlpatterns can 「include」 other urlconf modules. this
essentially 「roots」 a set of urls below other ones.
including another urlconf
1. add an import: from blog import urls as blog_urls
2. add a url to urlpatterns: url(r'^blog/', include(blog.urls))
'''from django.conf.urls import
include, url
urlpatterns =[
url(r
'^admin/
', admin.site.urls),
url(r
'^blog/
', include('
blog.urls
')),
]
在使用django 專案時,乙個常見的需求是獲得url 的最終形式,以用於嵌入到生成的內容中(檢視中和顯示給使用者的url等)或者用於處理伺服器端的導航(重定向等)。人們強烈希望不要硬編碼這些url(費力、不可擴充套件且容易產生錯誤)或者設計一種與urlconf 毫不相關的專門的url 生成機制,因為這樣容易導致一定程度上產生過期的url。
在需要url 的地方,對於不同層級,django 提供不同的工具用於url 反查:
urls.py:
from django.conf.urls importurlfrom . import
views
urlpatterns =[
#...
url(r'
^articles/([0-9])/$
', views.year_archive, name='
news-year-archive'),
#...
]
在模板中:
"">2012 archive
在python中:
同redirect("/path/")
命名空間(英語:namespace)是表示識別符號的可見範圍。乙個識別符號可在多個命名空間中定義,它在不同命名空間中的含義是互不相干的。這樣,在乙個新的命名空間中可定義任何識別符號,它們不會與任何已有的識別符號發生衝突,因為已有的定義都處於其它命名空間中。
由於name沒有作用域,django在反解url時,會在專案全域性順序搜尋,當查詢到第乙個name指定url時,立即返回
project的urls.py:
Django的路由層
一 簡單的路由配置 from django.conf.urls import urlviews urlpatterns path views.index 二 有名分組 先欠著三 分發 from django.conf.urls import include,url urlpatterns url r...
Django 路由正則URL
django 路由正則url url1 路由url r detail views.detail blank href detail nid url2 返回乙個值,d 也可以寫為w 任意正則 url r detail d html views.detail blank href detail html...
Django的路由系統 URL
基本格式 from django.conf.urls import url urlpatterns url 正規表示式,views檢視,引數,別名 django 2.0版本的路由系統 from django.urls import path,re path urlpatterns path arti...