如何在Django URL模式中使用十进制数字?
问题描述:
我想在Django URL模式中使用带小数点的数字,但我不确定它是否实际可行(我不是正则表达式专家)。如何在Django URL模式中使用十进制数字?
这是我想使用的网址是什么:
/item/value/0.01
/item/value/0.05
这些网址会显示价值$ 0.01或$ 0.05物品。当然,我可以采取简单的方法,并以毫秒为单位传递值,以便将它作为/ item/value/1,但我希望在我的视图中将该参数作为十进制数据类型而不是整数(并且我可能不得不在一定程度上处理几分之一)。是否有可能编写一个Django URL模式的正则表达式来处理这个问题?
答
它可以像
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:
...
答
我不知道Django的明确,但这应该匹配的网址:
r"^/item/value/(\d+\.\d+)$"
答
如果被接受只$ 0.01或$ 0.05的harto的模式可以像这样指定的值:
r"^/item/value/(\d\.\d{2})$"
如果你想拥有ints and float in * one * url,写下如下:`r“^/item/value /(\ d +(?:\。\ d +))$”` – Boldewyn 2009-07-15 12:26:47
+1对于更通用的答案(不限于小数点后有两位数字的数字) – btk 2012-05-12 21:28:18
@Boldewyn Ur解决方案无效。无论是整数或浮动...我试图用它,但无济于事 – 2013-10-01 05:49:32