如何在Django URL模式中使用小数?
我想在Django的URL模式中使用带小数点的数字,但不太确定这是否真的可行(我对正则表达式不太了解)。
这是我想在URL中使用的格式:
/item/value/0.01
/item/value/0.05
这些URL会显示价值为$0.01或$0.05的商品。当然,我可以简单地把值以分为单位传递,比如使用/item/value/1,但我希望在我的视图中接收这个参数时是小数类型,而不是整数(而且我可能在某个时候需要处理小于一分的情况)。在Django的URL模式中,能写出一个正则表达式来处理这个吗?
4 个回答
3
如果只接受 $0.01 或 $0.05 这两个数值,可以这样设置 harta 的模式:
r"^/item/value/(\d\.\d{2})$"
14
我对Django不是很了解,不过这个应该能匹配到网址:
r"^/item/value/(\d+\.\d+)$"
18
这可以是类似这样的内容:
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:
...