Передача переменной в id (HTML)

Рейтинг: 0Ответов: 1Опубликовано: 09.05.2023

Я вывожу на страницу комментарии с помощью цикла:

{% for comment in page_obj %}
  <div class="media mb-4">
    <div class="media-body">
      <h5 class="mt-0">
        <a href="{% url 'posts:profile' comment.author.username %}">
          {{ comment.author.username }}
        </a>
        {% if comment.author.username == request.user.username %}
          &nbsp
          <a class="btn btn-primary" href="{% url 'posts:edit_comment' comment.id %}">
            Редактировать комментарий
          </a>
          &nbsp
          {% include 'includes/button_delete_comment.html' %}
        {% endif %}
      </h5>
      <p>
        {{ comment.text }}
      </p>
    </div>
  </div>
{% endfor %} 

Раньше подтверждение на удаление комментария я сделал через отдельную страницу. Но сейчас хочу переделать с помощью модального окна и тега dialog.

{% include 'includes/button_delete_comment.html' %}:
<button type="button" onclick="window.comment_delete.showModal();" class="btn btn-primary">
  Удалить комментарий.
</button>
<dialog id="comment_delete">
  <h1>Вы действительно хотите удалить комментарий?</h1>

    <form action="{% url 'posts:comment_delete' comment.id %}">
      {% csrf_token %}
        <button type="submit" class="btn btn-primary">
          Да, удалить комментарий!
        </button>
    </form>
    &nbsp
    <form method="dialog">
      <button type="submit" class="btn btn-primary">Отмена</button>
    </form>
</dialog>

Однако столкнулся что в comment.id в id="comment_delete" сохраняется последний из списка и соответственно удаляется не выбранный комментарий а последний из списка. Буду признателен за совет.

Ответы

▲ 1Принят

Я реализовал так:

{% for i in objects %}
    <div id="do_delete_{{ i.id }}" class="change_form_ozp">
        <form method="post" action="{% url 'ams:do_delete' i.id %}">
            {% csrf_token %}
            Вы действительно хотите удалить запись???
            <br><br>
            <input type="submit" value="Удалить">
            <button onmousedown="showhide_changeform('do_delete_{{ i.id }}')" class="close_button">
                <i class="fa-solid fa-xmark"></i>
            </button>
        </form>
    </div>
{% endfor %}

Таким образом в шаблоне есть невидимая форма удаления для каждого элемента в БД. При этом кнопку удаления (которая делает форму видимой) можно располагать где хочешь таким же циклом (в моем случае таблица с выводом атрибутов сущностей):

{% for i in objects %}
    <tr class="table_row">
    <td>{{ i.year }}</td>
    <td align="center">
        <a href="{{ i.result.url }}" target="_blank">
            <i class="fa-solid fa-file-lines"></i>
        </a>
    </td>
    <td align="center">
         <button onmousedown="showhide_changeform('do_delete_{{ i.id }}')" class="close_button">
             <i class="fa-solid fa-trash"></i>
         </button>
    </td>
    </tr>
{% endfor %}