我正在尝试这样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"),
然后它工作正常。有谁知道为什么?
答案 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 %}