url配置(urlconf)就像django 所支撐**的目錄。它的本質是url模式以及要為該url模式呼叫的檢視函式之間的對映表;它就是以這種方式告訴django,用哪個url呼叫哪段**。url的載入是從配置檔案中開始。
urlpatterns = [url(正規表示式, views檢視函式,引數,別名),
]
引數說明:
例子:
from django.conf.urls import urlfrom . import views
urlpatterns = [
#匹配articles開頭,2003結尾的url,精確匹配。
url(r'^articles/2003/$', views.special_case_2003),
#articles開頭,4個數字結尾的url,模糊匹配
url(r'^articles/([0-9])/$', views.year_archive),
#articles開頭,再接4位數字,最後接2位數字結尾的url
url(r'^articles/([0-9])/([0-9])/$', views.month_archive),
#articles開頭,再接4位數字,再接2位數字,最後接數字,至少1個數字
url(r'^articles/([0-9])/([0-9])/([0-9]+)/$', views.article_detail),
]
通過正規表示式進行匹配url。
from django.conf.urls import urlfrom . import views
urlpatterns = [
#匹配articles開頭,2003結尾的url
url(r'^articles/2003/$', views.special_case_2003),
#匹配articles開頭,檢視函式包含4位數字的year引數
url(r'^articles/(?p[0-9])/$', views.year_archive),
#匹配articles開頭,檢視函式包含4位數字的year引數,2位數字的month引數
url(r'^articles/(?p[0-9])/(?p[0-9])/$', views.month_archive),
#匹配articles開頭,包含4位數字的year,2位數字的month,2位數字的day
url(r'^articles/(?p[0-9])/(?p[0-9])/(?p[0-9])/$', views.article_detail),
]
如果對映 url 太多怎麼辦,全寫乙個在 urlpatterns 顯得繁瑣,所以二級路由應用而生。所以include主要是用於減少重複**。
例子1:
作用:簡單明瞭。
from django.conf.urls import include, urlfrom credit import views as credit_views
extra_patterns = [
url(r'^reports/$', credit_views.report),
url(r'^reports/(?p[0-9]+)/$', credit_views.report),
url(r'^charge/$', credit_views.charge),
]urlpatterns = [
url(r'^$', main_views.homepage),
url(r'^credit/', include(extra_patterns)),
]
例子2:
作用:減少重複**。
# include前版本from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^(?p[\w-]+)-(?p\w+)/history/$', views.history),
url(r'^(?p[\w-]+)-(?p\w+)/edit/$', views.edit),
url(r'^(?p[\w-]+)-(?p\w+)/discuss/$', views.discuss),
url(r'^(?p[\w-]+)-(?p\w+)/permissions/$', views.permissions),
]# include後版本
from django.conf.urls import include, url
from . import views
urlpatterns = [
url(r'^(?p[\w-]+)-(?p\w+)/', include([
url(r'^history/$', views.history),
url(r'^edit/$', views.edit),
url(r'^discuss/$', views.discuss),
url(r'^permissions/$', views.permissions),
])),
]
urlpatterns = [url(r'^admin/', admin.site.urls),
]
作用:對於某一批url具有固定引數的時候就可以使用此方法。
urlpatterns = [url(r'^blog/(?p[0-9])/$', views.year_archive, ),
]#檢視函式裡面呼叫
views.year_archive(request, year='2005',foo='bar')
作用:對於url很長的時候比較有用。
urlpatterns = [url(r'^index',views.index,name='myindex'),
]#呼叫別名
{#
Django之路由系統
url配置 urlconf 就像django所支撐 的目錄。它的本質是url與要為該url呼叫的檢視函式之間的對映表。我們就是以這種方式告訴django,遇到哪個url的時候,要對應執行哪個函式。django 1.11版本 urlconf官方文件 from django.conf.urls impo...
Django 之路由篇
django 之檢視篇 django 之 models models 模型 資料表關係 django 之模板篇 參考資料 pip install django 1.8 路由需要關注兩點 接受的url是什麼,即如何使用re對傳入url進行匹配 已知url匹配到哪個處理模組 url匹配規則 正則以r開頭...
django之路由層
1.django中urls.py負責url的路由分發urlpatterns url r admin admin.site.urls url的第乙個引數實際為乙個正規表示式,第二個引數為檢視函式。瀏覽器訪問時,會遍歷該列表,匹配到則終止,不再往下匹配。當使用者訪問的url不存在時,django會嘗試將...