未找到末尾带有编号的视图的视图

Posted

技术标签:

【中文标题】未找到末尾带有编号的视图的视图【英文标题】:View not found for views with number at the end 【发布时间】:2017-02-24 05:35:53 【问题描述】:

我正在尝试像这样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】:

有问题的 URL 接受一个参数 (\d+),您没有传递您的 reverse 函数。试想:这是一个细节视图,但是你想显示哪个节目?

要修复,请使用args 参数调用reverse

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

一般来说,对于这样的 URL,建议有一个命名的捕获组:

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 %

【讨论】:

哦,这很有道理。我将如何在模板中传递这个参数?我这样做是因为% url 'shows-default-view' % 这样我就可以动态生成 URL @JohnQ 在最后添加。更常见的情况是 id 不被硬编码,例如show.id 而不是 1

以上是关于未找到末尾带有编号的视图的视图的主要内容,如果未能解决你的问题,请参考以下文章

怎么用SQL语句创建视图

表格视图中的按钮没有响应其单元格编号

将列表返回到仅具有唯一编号的视图

在 oracle 中有查看对象编号吗?

使用单击子视图中的表格单元格来填充视图中的字段

仅限键盘编号的EditText视图