Django在url中使用'/'抛出错误

时间:2015-05-31 18:50:22

标签: django django-urls

我的django应用程序中有一个urls.py,如下所示:

url(r'^myurl/(?P<pid>.*)/(?P<qid>.*)/(?P<trantype>.*)$', views.MyView.as_view(), name='myurl'),

此处,网址中的trantype参数有时会从其获取的数据中获得'/'。当出现这种情况时,django会向我抛出有关超出参数数量的错误。如何将trantype参数设为'/'

1 个答案:

答案 0 :(得分:1)

我认为错误信息在这里会产生误导。

而不是超过我希望它找不到足够参数的参数数量,因为你的。*是贪婪的,这意味着他们会尝试尽可能匹配,所以pid会匹配到最后一个出现反斜杠。我不知道为什么这会起作用。

如果您的qid和pid参数不能包含斜杠,那么肯定会建议将其相应的捕获组限制为\w+

尝试这种模式:

url(r'^myurl/(?P<pid>\w+)/(?P<qid>\w+)/(?P<trantype>.*)$', views.MyView.as_view(), name='myurl'),

如果\ w没有剪切它,你也可以尝试使捕获组变得懒惰:

url(r'^myurl/(?P<pid>.*?)/(?P<qid>.*?)/(?P<trantype>.*)$', views.MyView.as_view(), name='myurl'),

我在端点中也使用了斜杠(Base64编码的字符串),并且我没有遇到过问题。