我有一个简单的图书馆页面,用户可以从图书馆注册、添加和编辑\删除记录。
模板.html
{% extends "book/base.html" %}
{% block content %}
<div class="row justify-content-center mt-5">
</div>
{% if books %}
{% for book in books %}
<div class="table-users">
<div class="header"> {{ book.title }} </a> </div>
<table cellspacing="0">
<tr><center>
<th>Name</th>
<th>Author</th>
<th>Delete</th>
</center>
</tr>
<td> {{ book.name }} </td>
<td> {{ book.author }} </td>
<td> <form class="delete" method="POST" action="{% url 'deletebook' book.id %}"> {% csrf_token %} <button class="delete" type="submit" class="btn btn-warning">Delete</button></td>
views.py:
def deletebook (request, book_pk):
book = get_object_or_404(Book, pk=book_pk, user=request.user)
if request.method == 'POST':
book.delete()
return redirect('currentbooks')
在这个循环中,只有 POST 方法的第一个元素是活动的和工作的。实际上,我会在渲染后调试 html,并且我已经看到只有第一个元素具有 POST 方法。我在 google 和 stackoverflow 上搜索,发现了一些关于将 id 更改为 class 的信息。但是我的模板没有任何 ID。我也尝试将 {% csrf_token %} 移到循环之外,但它也不起作用。我想是的,我在这里错过了一些重要的东西。如果有人可以帮助我,我真的很感激。提前致谢。