【发布时间】:2014-09-09 09:10:07
【问题描述】:
我是 Django 的新手。我在views.py中写了一个函数func()和对应的正则表达式来匹配urls.py中的url,如下所示:
(r'callfunc/(?P<param1>(\w+|\d+|\-){0,50})/(?P<param2>(\w+|\d+|\-){0,50})/$', 'func')
问题是有时'/' 出现在param1 字符串中,然后正则表达式匹配在 urls.py 中失败,应用程序卡在匹配中。有什么方法可以正确处理,即使有任何 / 进入 param1,param1 也能正确设置?
【问题讨论】:
-
将 \/ 添加到您的正则表达式以将其包含在匹配中。
-
这行不通,因为 / 没有必要总是出现在参数中,它可能会出现,也可能不会出现,在这种情况下 url 将被错误地匹配。
-
您可以添加
?使其成为可选 -
@Joy 有什么方法可以设计您的应用程序,使
/不出现在您的参数中?这将是最好的。因为如果您确实允许它们,那么您将失去能够一目了然地识别 URL 结构的简单性。 -
是的,我已经在base64调用它的地方处理了它,编码/可能出现的参数。