国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

在Django的URLconf中使用命名組的方法

2020-01-04 18:02:24
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了在Django的URLconf中使用命名組的方法,Django是Pyhton各色高人氣開發框架中最為著名的一個,需要的朋友可以參考下
在我們想要捕獲的URL部分上加上小括號,Django 會將捕獲的文本作為位置參數傳遞給視圖函數。 在更高級的用法中,還可以使用 命名 正則表達式組來捕獲URL,并且將其作為關鍵字參數傳給視圖。
一個 Python 函數可以使用關鍵字參數或位置參數來調用,在某些情況下,可以同時進行使用。 在關鍵字參數調用中,你要指定參數的名字和傳入的值。 在位置參數調用中,你只需傳入參數,不需要明確指明哪個參數與哪個值對應,它們的對應關系隱含在參數的順序中。
例如,考慮這個簡單的函數:
 
  1. def sell(item, price, quantity): 
  2.   print "Selling %s unit(s) of %s at %s" % (quantity, item, price) 

為了使用位置參數來調用它,你要按照在函數定義中的順序來指定參數。
 
  1. sell('Socks''$2.50', 6) 


為了使用關鍵字參數來調用它,你要指定參數名和值。 下面的語句是等價的:
 
  1. sell(item='Socks', price='$2.50', quantity=6) 
  2. sell(item='Socks', quantity=6, price='$2.50'
  3. sell(price='$2.50', item='Socks', quantity=6) 
  4. sell(price='$2.50', quantity=6, item='Socks'
  5. sell(quantity=6, item='Socks', price='$2.50'
  6. sell(quantity=6, price='$2.50', item='Socks'

最后,你可以混合關鍵字和位置參數,只要所有的位置參數列在關鍵字參數之前。 下面的語句與前面的例子是等價:
 
  1. sell('Socks''$2.50', quantity=6) 
  2. sell('Socks', price='$2.50', quantity=6) 
  3. sell('Socks', quantity=6, price='$2.50'

在 Python 正則表達式中,命名的正則表達式組的語法是 (?P<name>pattern) ,這里 name 是組的名字,而 pattern 是匹配的某個模式。
下面是一個使用無名組的 URLconf 的例子:
 
  1. from django.conf.urls.defaults import * 
  2. from mysite import views 
  3.  
  4. urlpatterns = patterns(''
  5.   (r'^articles/(/d{4})/$', views.year_archive), 
  6.   (r'^articles/(/d{4})/(/d{2})/$', views.month_archive), 


下面是相同的 URLconf,使用命名組進行了重寫:
 
  1. from django.conf.urls.defaults import * 
  2. from mysite import views 
  3.  
  4. urlpatterns = patterns(''
  5.   (r'^articles/(?P<year>/d{4})/$', views.year_archive), 
  6.   (r'^articles/(?P<year>/d{4})/(?P<month>/d{2})/$', views.month_archive), 

這段代碼和前面的功能完全一樣,只有一個細微的差別: 取的值是以關鍵字參數的方式而不是以位置參數的方式傳遞給視圖函數的。
例如,如果不帶命名組,請求 /articles/2006/03/ 將會等同于這樣的函數調用:
 
  1. month_archive(request, '2006''03'


而帶命名組,同樣的請求就會變成這樣的函數調用:
 
  1. month_archive(request, year='2006', month='03'


使用命名組可以讓你的URLconfs更加清晰,減少搞混參數次序的潛在BUG,還可以讓你在函數定義中對參數重新排序。 接著上面這個例子,如果我們想修改URL把月份放到 年份的 前面 ,而不使用命名組的話,我們就不得不去修改視圖 month_archive 的參數次序。 如果我們使用命名組的話,修改URL里提取參數的次序對視圖沒有影響。
當然,命名組的代價就是失去了簡潔性: 一些開發者覺得命名組的語法丑陋和顯得冗余。 命名組的另一個好處就是可讀性強。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 蒲城县| 福鼎市| 常宁市| 江津市| 陵川县| 莱西市| 岳阳县| 潜山县| 汉寿县| 鹿泉市| 重庆市| 杂多县| 上杭县| 玉环县| 阳西县| 洛川县| 文山县| 满城县| 尚义县| 庆安县| 凭祥市| 龙州县| 泊头市| 彭阳县| 文山县| 克拉玛依市| 哈巴河县| 承德市| 永定县| 广丰县| 大荔县| 定西市| 苏州市| 闽侯县| 伽师县| 古浪县| 孝义市| 同德县| 永福县| 武冈市| 华阴市|