在前面的例子裡面,我們已經了解,django裡面可以通過在project同名的那個目錄下的urls.py檔案裡面配置路由,根據使用者輸入的url,呼叫不同的函式或者類的方法。下面看看具體的一些例子。
單一的路由對應關係。這種方式最直接,前面已經多次出現, 可以是fbv或者cbv型別的。
url(r'^login/', views.login)
url(r'^home/', views.home.as_view()),
基於正規表示式的路由關係。具體來說,也可以分成兩種:a. url(r'^detail-(\d+).html', views.detail) , 這裡出現了乙個分組(\d+),因此需要額外的再傳遞乙個引數給detail這個函式,如果多個分組的話,需要按照順序傳遞多個引數到detail函式b. url(r'^detail-(?p\d+)-(?p\d+).html', views.detail), 這裡因為指定了nid和uid,因此傳遞引數的時候也需要指明具體是傳遞給誰的。c. 上面兩種情況都可以通過萬能引數實現 def detail(request, *args,**kwargs)
實戰模板:
url(r'^detail-(\d+)-(\d+).html', views.detail),
def func(request, nid, uid):
pass
def func(request, *args):
args = (2,9)
def func(request, *args, **kwargs):
args = (2,9)
#-----------------------------我是分割線------------------------------------
url(r'^detail-(?p\d+)-(?p\d+).html', views.detail)
def func(request, nid, uid):
pass
def funct(request, **kwargs):
kwargs =
def func(request, *args, **kwargs):
args = (2,9)
給路由的對映設定名稱,這樣更方便呼叫。reverse方法可以通過name倒過來找url的路徑url.py
url(r'^asdfasdfasdf/', views.index, name='i1'),
url(r'^yug/(\d+)/(\d+)/', views.index, name='i2'),
url(r'^buy/(?p\d+)/(?p\d+)/', views.index, name='i3'),
view.py
def func(request, *args, **kwargs):
from django.urls import reverse
url1 = reverse('i1') # asdfasdfasdf/
url2 = reverse('i2', args=(1,2,)) # yug/1/2/
url3 = reverse('i3', kwargs=) # buy/1/9/
***.html
# asdfasdfasdf/
# yug/1/2/
# buy/1/9/
比如:
url裡面還可以設定預設值,比如說我們可以定義乙個字典
url(r'^index/', views.index, ),在index這個函式裡面,我們就可以直接呼叫這個預設值
最後乙個是命名空間
urls.py
/index/ name = 'n1'
函式裡面生成url的話,需要指定一條明確的路徑
reverser('m1:n1')
Django路由系統
urlpatterns path 要匹配的路徑 可以是正規表示式 檢視函式,引數,別名 1 正規表示式 乙個正規表示式字串 2 檢視函式 乙個可呼叫物件,通常為乙個檢視函式或乙個指定檢視函式路徑的字串 3 引數 要傳遞給檢視函式的預設引數 字典形式,可選 4 別名 乙個可選的name引數 1 在py...
Django路由系統
普通的url 函式 有傳遞引數的url django2以上版本,使用正規則要用re path,之前的版本使用url re path add w add 一樣功能 path add add re path r add2 p w p d add path add2 add2 路由分發 使用include...
Django路由系統
基本格式 from django.conf.urls import urlurlpatterns url 正規表示式,views檢視函式,引數,別名 引數說明 正規表示式 乙個正規表示式字串 views檢視函式 乙個可呼叫物件,通常為乙個檢視函式或乙個指定檢視函式路徑的字串 引數 可選的,要傳遞給檢...