2009-07-14 25 views
5

我想在Django URL模式中使用帶小數點的數字,但我不確定它是否實際可行(我不是正則表達式專家)。如何在Django URL模式中使用十進制數字?

這是我想使用的網址是什麼:

/item/value/0.01 
/item/value/0.05 

這些網址會顯示價值$ 0.01或$ 0.05物品。當然,我可以採取簡單的方法,並以毫秒爲單位傳遞值,以便將它作爲/ item/value/1,但我希望在我的視圖中將該參數作爲十進制數據類型而不是整數(並且我可能不得不在一定程度上處理幾分之一)。是否有可能編寫一個Django URL模式的正則表達式來處理這個問題?

回答

13

它可以像

urlpatterns = patterns('', 
    (r'^item/value/(?P<value>\d+\.\d{2})/$', 'myapp.views.byvalue'), 
    ... more urls 
) 

網址不應以斜線開始。

在視圖中可以有功能:

def byvalue(request,value='0.99'): 
    try: 
     value = float(value) 
    except: 
     ... 
13

我不知道Django的明確,但這應該匹配的網址:

r"^/item/value/(\d+\.\d+)$" 
+6

如果你想擁有ints and float in * one * url,寫下如下:`r「^/item/value /(\ d +(?:\。\ d +))$」` – Boldewyn 2009-07-15 12:26:47

+0

+1對於更通用的答案(不限於小數點後有兩位數字的數字) – btk 2012-05-12 21:28:18

+0

@Boldewyn Ur解決方案無效。無論是整數或浮動...我試圖用它,但無濟於事 – 2013-10-01 05:49:32

3

如果被接受只$ 0.01或$ 0.05的harto的模式可以像這樣指定的值:

r"^/item/value/(\d\.\d{2})$" 
相關問題