五 Django之路由系統

2022-04-01 08:57:10 字數 3033 閱讀 7746

url配置(urlconf)就像django 所支撐**的目錄。它的本質是url模式以及要為該url模式呼叫的檢視函式之間的對映表;它就是以這種方式告訴django,用哪個url呼叫哪段**。url的載入是從配置檔案中開始。 

urlpatterns = [

url(正規表示式, views檢視函式,引數,別名),

]

引數說明:

例子:

from django.conf.urls import url 

from . 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 url

from . 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, url

from 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會嘗試將...