找不到最后带数字的视图

时间:2016-10-14 17:41:24

标签: python django python-2.7 django-templates django-views

我正在尝试这样reverse

print reverse("shows-view")

这是我的urls.py

url(r'^shows/(\d+)$', views.show_details, name="shows-view"),

每当我尝试这样做时,它只会返回:

Reverse for 'shows-view' with arguments '()' and keyword arguments '{}' not found. 1 pattern(s) tried: ['shows/(\\d+)$']

但如果我尝试直接访问该页面(http://localhost/shows/3333),那么它可以正常工作

但如果我对其他观点做反向:

print reverse("shows-default-view")

在同一urls.py文件中使用以下声明:

url(r'^shows/', views.popular, name="shows-default-view"),

然后它工作正常。有谁知道为什么?

1 个答案:

答案 0 :(得分:0)

相关网址接受您未传递(\d+)功能的参数reverse。试想一下:这是一个详细信息视图,但哪个显示您要显示?

要解决此问题,请使用reverse参数调用args

reverse("shows-default-view", args=[1]) # to show show with id of 1

一般来说,对于这类网址,建议使用已命名的已捕获组:

url(r'^shows/(?P<pk>\d+)$', views.show_details, name="shows-view")

然后拨打reverse的电话将是:

reverse("shows-default-view", kwargs={'pk': 1})

要在模板中使用reverse,只需将两个参数放在一起:

{% url 'shows-view' 1 %}