Regex Django url映射:正则表达式

Regex Django url映射:正则表达式,regex,django,Regex,Django,在Django中,我想使用正则表达式: url(r'^(?P<arg1>\w+)/(?P<arg2>\w*)/$', ...) 它不适用于第一个请求。如何操作?将前面的/添加到第二个捕获组之前,再加上第二个捕获组到非捕获组中,并通过在整个非捕获组之后添加?使其成为可选 ^(?P<arg1>\w+)(?:/(?P<arg2>\w*))?/$ 我建议您使用两条urlconf行,而不是一条,一条带一个参数,另一条带两个参数,都指向具有第二个可选参数的

在Django中,我想使用正则表达式:

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