按钮中的“NoReverseMatch”指的是在 url 中带有参数的页面
Posted
技术标签:
【中文标题】按钮中的“NoReverseMatch”指的是在 url 中带有参数的页面【英文标题】:"NoReverseMatch" when in button that refers to a page with parameter in the url 【发布时间】:2020-12-13 23:05:23 【问题描述】:我有这个错误:
"NoReverseMatch 在 /home/2/
未找到带有参数 '('',)' 的 'calendar_new' 的反向操作。尝试了 1 种模式:['home/(?P
在一个按钮中。在 ulr 中,我有一个“group_id”参数,我需要将其用作过滤器参数。我不明白出了什么问题,因为如果我在 url 中手动编写路径,我没有任何问题,它会正确打开页面。 "group_id" 已经是 url 中的参数了。
在calendar.html中:
<div class="cover-container d-flex w-100 h-100 p-3 mx-auto flex-column">
<main class="inner cove border" role="main" style="background-color: white;">
<h1 class="cover-heading mt-3">Lista Calendari di nome </h1>
<div class="mt-5">
<ul class="list-group">
% for calendar in object_list %
<a href=" calendar.id "><li class="list-group-item list-group-item-action"> calendar.name </li></a>
% empty %
<li class="list-group-item">Non ci sono calendari disponibili per questo edificio</li>
% endfor %
</ul>
</div>
</main>
<!-- NUOVO CALENDARIO -->
<a class="btn btn-primary btn-lg active mt-5 mb-5" href="% url 'cal:calendar_new'%">Aggiungi Calendario</a>
</div>
在 urls.py 中:
url(r'^home/(?P<group_id>\d+)/$', views.CalendarsOfGroupView.as_view(), name='group_view'),
url(r'^home/(?P<group_id>\d+)/calendar/new/$', views.calendar, name='calendar_new'),
【问题讨论】:
你应该将 group_id 参数传递给 url 模板标签docs.djangoproject.com/en/3.1/topics/http/urls/#examples Tahnks,我已阅读此文档但未能解决问题。现在我写 "href="% url 'cal:calendar_new' calendar.group.id %"" 但它不起作用 您还没有显示视图,所以我们不知道如何访问模板中的group_id
。暂时删除% url %
标签,然后尝试 calendar.group.id
之类的操作,直到您弄清楚如何在模板中显示组ID。我认为 view.kwargs.group_id
应该可以。您可能会发现 % debug %
模板标签或 django 调试工具栏对此类问题很有帮助。
calendar.group.id 在那里肯定不可用,因为 calendar 在 for 循环中是可变的,在这个 标记之前关闭,所以 calendar.group.id 在那里不存在因此同样的错误
非常感谢您的回答!我通过写如下解决了它:“href="% url 'cal:calendar_new' view.kwargs.group_id %" "
【参考方案1】:
假设您在上下文中有组
<a class="btn btn-primary btn-lg active mt-5 mb-5" href="% url 'cal:calendar_new' group.id %">Aggiungi Calendario</a>
由于您的 url 需要匹配 group_id 参数
【讨论】:
不起作用!我正在输入 " href="% url 'cal:calendar_new' calendar.group.id %" " 但即使这样也不起作用。以上是关于按钮中的“NoReverseMatch”指的是在 url 中带有参数的页面的主要内容,如果未能解决你的问题,请参考以下文章
NoReverseMatch:在 Django 注册中的密码重置表单中?
如何解决 django 中的 NoReverseMatch 错误 [重复]