如何在Django URL模式中使用十进制数?

Jas*_*ion 8 python regex django django-urls

我想在Django URL模式中使用带小数点的数字,但我不确定它是否真的可行(我不是正则表达式专家).

这是我想要用于URL的内容:

/item/value/0.01
/item/value/0.05
Run Code Online (Sandbox Code Playgroud)

这些网址会显示价值0.01美元或0.05美元的商品.当然,我可以采取简单的方法,并以美分传递值,因此它将是/ item/value/1,但我希望在我的视图中接收作为十进制数据类型而不是整数的参数(和我可能不得不在某个时候处理一小部分分数).是否可以在Django URL模式中编写一个可以处理此问题的正则表达式?

Evg*_*eny 17

它可以是类似的东西

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

url不应该以斜杠开头.

在视图中你可以有功能:

def byvalue(request,value='0.99'):
    try:
        value = float(value)
    except:
        ...
Run Code Online (Sandbox Code Playgroud)


har*_*rto 14

我不知道Django具体,但这应该匹配URL:

r"^/item/value/(\d+\.\d+)$"
Run Code Online (Sandbox Code Playgroud)

  • 如果你想在*one*url中使用int和float,写下这样的东西:`r"^/item/value /(\ d +(?:\.\ d +))$"` (6认同)