Regex Django url映射:正则表达式
在Django中,我想使用正则表达式:Regex Django url映射:正则表达式,regex,django,Regex,Django,在Django中,我想使用正则表达式: url(r'^(?P<arg1>\w+)/(?P<arg2>\w*)/$', ...) 它不适用于第一个请求。如何操作?将前面的/添加到第二个捕获组之前,再加上第二个捕获组到非捕获组中,并通过在整个非捕获组之后添加?使其成为可选 ^(?P<arg1>\w+)(?:/(?P<arg2>\w*))?/$ 我建议您使用两条urlconf行,而不是一条,一条带一个参数,另一条带两个参数,都指向具有第二个可选参数的
url(r'^(?P<arg1>\w+)/(?P<arg2>\w*)/$', ...)
它不适用于第一个请求。如何操作?将前面的
/
添加到第二个捕获组之前,再加上第二个捕获组到非捕获组中,并通过在整个非捕获组之后添加?
使其成为可选
^(?P<arg1>\w+)(?:/(?P<arg2>\w*))?/$
我建议您使用两条urlconf行,而不是一条,一条带一个参数,另一条带两个参数,都指向具有第二个可选参数的相同视图。比如:
# urls.py
urlpatterns = patterns("",
url(r"^(?P<arg1>\w+)/(?P<arg2>\w+)/$", yourview, name="yourview_with_arg1_arg2"),
url(r"^(?P<arg1>\w+)/$", yourview, name="yourview_with_arg1"
)
# views.py
def yourview(arg1, arg2=None):
pass # etc
#url.py
urlpatterns=模式(“”,
url(r“^(?P\w+/(?P\w+)/$”,yourview,name=“yourview_with_arg1_arg2”),
url(r“^(?P\w+/$”,yourview,name=“yourview_with_arg1”
)
#views.py
def yourview(arg1,arg2=None):
通行证等
这样,以后看到您的代码的人会更清楚地了解您的意图,并且在必要时更容易将一些功能提取到单独的视图中。我认为第二个视图不起作用。事实上,第二个视图起作用。问题是,如果没有arg2,我不知道如何处理最后的斜杠(第一个请求)。这是从某个应用程序还是showData开始的?从showData开始。很好的建议。非常感谢。
^(?P<arg1>\w+)/?(?P<arg2>\w*)/$
# urls.py
urlpatterns = patterns("",
url(r"^(?P<arg1>\w+)/(?P<arg2>\w+)/$", yourview, name="yourview_with_arg1_arg2"),
url(r"^(?P<arg1>\w+)/$", yourview, name="yourview_with_arg1"
)
# views.py
def yourview(arg1, arg2=None):
pass # etc