Python 处理'/';Django中的url匹配

Python 处理'/';Django中的url匹配,python,regex,django,Python,Regex,Django,我是Django的新手。我在views.py中编写了一个函数func(),并在url.py中编写了相应的正则表达式来匹配url,如下所示: (r'callfunc/(?P<param1>(\w+|\d+|\-){0,50})/(?P<param2>(\w+|\d+|\-){0,50})/$', 'func') (r'callfunc/(?P(\w+\d+\124\-){0,50})/(?P(\w+\d+\124\-){0,50})/$,'func') 问题是,有

我是Django的新手。我在views.py中编写了一个函数func(),并在url.py中编写了相应的正则表达式来匹配url,如下所示:

   (r'callfunc/(?P<param1>(\w+|\d+|\-){0,50})/(?P<param2>(\w+|\d+|\-){0,50})/$', 'func')
(r'callfunc/(?P(\w+\d+\124\-){0,50})/(?P(\w+\d+\124\-){0,50})/$,'func')

问题是,有时“/”出现在
param1
字符串中,然后在url.py中正则表达式匹配失败,应用程序在匹配中卡住。是否有任何方法可以正确处理该问题,以便即使param1中有/,也能正确设置param1?

如何手动解析带有附加斜杠的url?比如说:
callfunc/foo/bar/baz/
。条形图属于param1还是param2?我认为在这种情况下,不可能正确区分这两个参数


您可以尝试添加一个特殊的隔离开关:
r'^callfunc/(?p[\w\d\-/]{1,50})/special vs/(?p[\w\d\-/]{1,50})/$'
隔离开关或多或少不可能出现在您的参数中。

将\/添加到您的正则表达式中以将其包含在匹配中。这将不起作用,因为不必总是出现在参数中,它可能会出现,在这种情况下可能不会出现url匹配错误。您可以添加
,使其匹配错误optional@Joy是否有任何方法可以设计应用程序,使
/
不会出现在参数中?这将是最好的。因为如果你允许它们,那么你就失去了一种简单性,即一眼就能识别URL是如何构造的。是的,我已经在通过base64编码参数where/可能出现的地方处理了它。