1. 關於正則的說明
url(r'^detail-(\d+)-(\d+).html',views.detail), 當客戶端輸入 127.0.0.1:8000/detail-2-9.html時,Django默認可以得到3個參數,分別是request,
-(\d+)-,-(\d+)-。 所以定義detail函數的時候,需要把這3個參數都接收,否則會報錯。當然了是嚴格按照順序來寫/獲取到的。
def detail(request,nid,uid):
print(nid,uid)
2.默認情況下是嚴格按照順序來獲取得。但是如果想調整形式參數的時候,就會影響到整個程序。基於此,Django還支持正則表達式的分組。
把第1個匹配的賦值給nid,把第2個匹配的賦值給uid.
url(r'^detail-(?P<nid>\d+)-(?P<uid>\d+).html',views.detail),
分組寫的好處是,下列2個函數就無區別了。形式參數的位置不會影響代碼的值。
def detail(request,nid,uid)
def detail(request,uid,nid)
3. args:接收的是元組
kwargs:接收的是字典類型的。
4.本節筆記
一,路由系統,URL 1.一個URL對應一個函數或者對應一個類 url(r'^index/',views.index),url(r'^home/',views.Home.as_view()), 2.一類URL對應一個函數或類 url(r'^detail-(\d+)-(\d+).html',views.index), 嚴格按照形式參數的位置給它傳遞的。 3.一類URL對應一個函數或類(用正則表達式的方法來做)推薦使用的。 url(r'^detail-(?P<nid>\d+)-(?P<uid>\d+).html',views.index), 形式參數的位置不影響值。 傳遞參數的時候,是按照nid=1,uid=9,的樣式傳遞的。 def detail(request,*args,**kwargs) #args元組,kwargs字典。 如果是以url(r'^detail-(\d+)-(\d+).html',views.index)的形式傳遞的話,則都傳到args里面了。因為傳遞形式是:1,2的格式。 如果是以url(r'^detail-(?P<nid>\d+)-(?P<uid>\d+).html',views.index)的形式的話,都傳到kwargs里。因為傳遞形式是:nid=1,uid=2的格式