Django基於正則表達式的URL(2)


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的格式

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM