NoReverseMatch Django - 属性打印在文件中的其他地方?

NoReverseMatch Django - Attribute printing elsewhere in file?

提问人:Kiana 提问时间:11/12/2023 更新时间:11/12/2023 访问量:27

问:

我在 Django DeleteView 模板中收到“无反向匹配”错误。我做了一些研究,据说这是当 url 重定向的属性为空时引起的。

错误如下所示,但是成功按钮重定向按预期工作,它只是在我的“取消”选项上出错。

enter image description here

在这种情况下,生成此错误的 url 如下所示:

 <a class="mt-3 mb-3 btn btn-secondary" id="cancel-btn" href="{% url 'post-detail' object.id %}">Cancel</a>

这意味着,“object.id”为空/空...

但是,我已将此属性添加到同一模板中的段落标签中,并且看到打印了正确的值(在本例中为 3)。

{% block content %}
<div>
    <form method="POST">
        {% csrf_token %} <!--required security token-->
        <fieldset class="form-group">
            <legend class="border-bottom mb-4">Delete Event</legend>
            <p>Are you sure you want to delete the post "{{object.id}}"?</p>
        </fieldset>
        <div class="form-group text-center">
            <button class="btn btn-danger m-3" type="submit">Yes, Delete</button>
            <a class="mt-3 mb-3 btn btn-secondary" id="cancel-btn" href="{% url 'post-detail' object.id %}">Cancel</a>
        </div>
    </form>
</div>
{% endblock content %}

enter image description here

也许我错误地输入了我的代码,但我似乎无法弄清楚该值是如何被擦除并且无法为取消按钮 href 引用的?

我的 urls.py 供参考:

urlpatterns = [
path("", EventPostListView.as_view(), name="event-blog-home"),
path("event/<int:pk>/", EventPostDetailView.as_view(), name="post-detail"),
path("event/new/", EventPostCreateView.as_view(), name="post-create"),
path("event/<int:pk>/update/", EventPostUpdateView.as_view(), name="post-update"),
path("event/<int:pk>/delete/", EventPostDeleteView.as_view(), name="post-delete"),
]

所有 create、list(post-detail) 和 update 视图都包含此视图,并按预期工作。

python html django django 模板 django-urls

评论

1赞 willeM_ Van Onsem 11/12/2023
你使用,而它应该(可能)是.post.pkobject.pk

答:

0赞 Kiana 11/12/2023 #1

感谢评论中的@willeM,我已经解决了这个问题。在我的 DeleteView 模板文件中,我使用“post.pk”而不是“object.pk”作为对模型实例的引用。