按钮中的“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\d+)/calendar/new/$']"

在一个按钮中。在 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 中带有参数的页面的主要内容,如果未能解决你的问题,请参考以下文章

django 生产服务器中的 NoReverseMatch

NoReverseMatch:在 Django 注册中的密码重置表单中?

如何解决 django 中的 NoReverseMatch 错误 [重复]

模板操作 url 中的 NoReverseMatch

django 应用程序中的 url 中的 NoReverseMatch

Django 教程第 3 部分 - /polls/ 中的 NoReverseMatch