如何在Django URL模式中使用小数?

10 投票
4 回答
11800 浏览
提问于 2025-04-15 12:54

我想在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:
        ...

撰写回答