我有一个网址,我想让状态标记可选。如果url中没有提供状态标记,我在view方法参数中给出一个默认值。我尝试使用此(?:/(?P<status>\d+))?$
替换令牌,但似乎效果不佳。感谢
url(r'^(?P<status>\d+)/$', frequest_list, name="frequest_list"),
def request_list(request, status=1):
...
...
更新: 这就是我尝试的模式:
url(r'^(?:/(?P<status>\d+))?$', frequest_list, name="frequest_list"),
所以,如果我尝试localhost/features/
效果很好
但如果我做localhost/features/1/
则失败
答案 0 :(得分:3)
只需创建一个调用相同视图的第二个url条目:
url(r'^features/$', frequest_list, name="frequest_list_default"),
url(r'^features/(?P<status>\d+)/$', frequest_list, name="frequest_list"),
答案 1 :(得分:1)
我在一些项目中使用单个url可选捕获,它们工作正常。您可能希望调整模式以使尾随/
可选。我认为这是导致你的网址不匹配的原因。 Django确实有一个“APPEND_SLASH”设置bool,如果它们丢失并且不匹配,会将其添加到您的URL:
url(r'^features(?:/(?P<status>\d+))?/?$', frequest_list, name="frequest_list")
可选/
也可能这样写:
url(r'^features/?(?:(?P<status>\d+)/?)?$', frequest_list, name="frequest_list")