我在 Django DeleteView 模板中收到“无反向匹配”错误。我做了一些研究,这可能是由于 url 重定向的属性为空而引起的。
错误如下所示,但是成功按钮重定向按预期工作,它仅在我的“取消”选项上出错。
在这种情况下,生成此错误的 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 %}
也许我错误地输入了代码,但我似乎无法弄清楚该值如何可能被删除并且无法被取消按钮 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"),
]
所有创建、列表(详细信息后)和更新视图都包含此视图并按预期工作。
感谢评论中的@willeM,我已经解决了这个问题。在我的 DeleteView 模板文件中,我使用“post.pk”而不是“object.pk”作为对模型实例的引用。