Django 只显示循环中的第一个 POST 元素

时间:2021-01-28 18:18:39

标签: django django-views django-templates

我有一个简单的图书馆页面,用户可以从图书馆注册、添加和编辑\删除记录。

模板.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 %} 移到循环之外,但它也不起作用。我想是的,我在这里错过了一些重要的东西。如果有人可以帮助我,我真的很感激。提前致谢。

0 个答案:

没有答案