2

我有一个 url,我想在其中将状态令牌设为可选。如果 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/会失败

4

2 回答 2

3

只需创建第二个调用相同视图的 url 条目:

url(r'^features/$', frequest_list, name="frequest_list_default"),
url(r'^features/(?P<status>\d+)/$', frequest_list, name="frequest_list"),
于 2012-12-12T00:08:54.587 回答
1

我在我的一些项目中使用单个 url 可选捕获,它们工作正常。您可能需要调整模式以使尾随/可选。我认为这就是导致您的网址不匹配的原因。Django 确实有一个“APPEND_SLASH”设置布尔值,如果它们缺少它并且不匹配,它将添加到您的 url 中:

url(r'^features(?:/(?P<status>\d+))?/?$', frequest_list, name="frequest_list")

可选的/也可以这样写:

url(r'^features/?(?:(?P<status>\d+)/?)?$', frequest_list, name="frequest_list")
于 2012-12-12T00:45:47.073 回答