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

首頁 > 編程 > Python > 正文

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

2019-11-25 17:10:04
字體:
來源:轉載
供稿:網友

在我們想要捕獲的URL部分上加上小括號,Django 會將捕獲的文本作為位置參數傳遞給視圖函數。 在更高級的用法中,還可以使用 命名 正則表達式組來捕獲URL,并且將其作為關鍵字參數傳給視圖。

一個 Python 函數可以使用關鍵字參數或位置參數來調用,在某些情況下,可以同時進行使用。 在關鍵字參數調用中,你要指定參數的名字和傳入的值。 在位置參數調用中,你只需傳入參數,不需要明確指明哪個參數與哪個值對應,它們的對應關系隱含在參數的順序中。

例如,考慮這個簡單的函數:

def sell(item, price, quantity):  print "Selling %s unit(s) of %s at %s" % (quantity, item, price)

為了使用位置參數來調用它,你要按照在函數定義中的順序來指定參數。

sell('Socks', '$2.50', 6)

為了使用關鍵字參數來調用它,你要指定參數名和值。 下面的語句是等價的:

sell(item='Socks', price='$2.50', quantity=6)sell(item='Socks', quantity=6, price='$2.50')sell(price='$2.50', item='Socks', quantity=6)sell(price='$2.50', quantity=6, item='Socks')sell(quantity=6, item='Socks', price='$2.50')sell(quantity=6, price='$2.50', item='Socks')

最后,你可以混合關鍵字和位置參數,只要所有的位置參數列在關鍵字參數之前。 下面的語句與前面的例子是等價:

sell('Socks', '$2.50', quantity=6)sell('Socks', price='$2.50', quantity=6)sell('Socks', quantity=6, price='$2.50')

在 Python 正則表達式中,命名的正則表達式組的語法是 (?P<name>pattern) ,這里 name 是組的名字,而 pattern 是匹配的某個模式。

下面是一個使用無名組的 URLconf 的例子:

from django.conf.urls.defaults import *from mysite import viewsurlpatterns = patterns('',  (r'^articles/(/d{4})/$', views.year_archive),  (r'^articles/(/d{4})/(/d{2})/$', views.month_archive),)

下面是相同的 URLconf,使用命名組進行了重寫:

from django.conf.urls.defaults import *from mysite import viewsurlpatterns = patterns('',  (r'^articles/(?P<year>/d{4})/$', views.year_archive),  (r'^articles/(?P<year>/d{4})/(?P<month>/d{2})/$', views.month_archive),)

這段代碼和前面的功能完全一樣,只有一個細微的差別: 取的值是以關鍵字參數的方式而不是以位置參數的方式傳遞給視圖函數的。

例如,如果不帶命名組,請求 /articles/2006/03/ 將會等同于這樣的函數調用:

month_archive(request, '2006', '03')

而帶命名組,同樣的請求就會變成這樣的函數調用:

month_archive(request, year='2006', month='03')

使用命名組可以讓你的URLconfs更加清晰,減少搞混參數次序的潛在BUG,還可以讓你在函數定義中對參數重新排序。 接著上面這個例子,如果我們想修改URL把月份放到 年份的 前面 ,而不使用命名組的話,我們就不得不去修改視圖 month_archive 的參數次序。 如果我們使用命名組的話,修改URL里提取參數的次序對視圖沒有影響。

當然,命名組的代價就是失去了簡潔性: 一些開發者覺得命名組的語法丑陋和顯得冗余。 命名組的另一個好處就是可讀性強。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鲁甸县| 汉阴县| 黎平县| 从化市| 汨罗市| 正镶白旗| 宁明县| 大城县| 西平县| 喀喇| 平和县| 谢通门县| 汉沽区| 调兵山市| 清原| 萨迦县| 咸丰县| 炎陵县| 北安市| 澎湖县| 珠海市| 历史| 新宁县| 昆明市| 开封县| 景泰县| 林州市| 上林县| 清水河县| 琼中| 古田县| 阜南县| 宜城市| 沁阳市| 青州市| 郎溪县| 河北省| 邹平县| 新蔡县| 双柏县| 珲春市|