【发布时间】:2022-01-04 01:39:39
【问题描述】:
如何使用 {{obj.pk}} 拥有可以像某个帖子一样定位对象 pk 的按钮/链接,然后打开模态 edit modal 和 delete modal。
然后模态框可以使用 AJAX(Fetch API 或 Jquery)在不刷新的情况下成功编辑和删除。我有问题以模态为目标打开具有某些 PK 的帖子。我不能使用 id="editPost{{obj.id}}" 或 id="deletePost{{obj.id}}" 来定位模态,因为我需要将模态放在 forloop 中,然后每个模态都会重复发帖。
这里是一些代码:
{% for obj in page_obj %}
<li>
<a class="dropdown-item" data-bs-toggle="modal" data-bs-target="#editPost" href="{% url 'post-update' obj.pk %}">Edit Post</a>
</li>
<li>
<a class="dropdown-item" data-bs-toggle="modal" data-bs-target="#deletePost" href="{% url 'post-delete' obj.pk %}">Delete Post</a>
</li>
<div id="post{{obj.id}}" class="box-content">
<p class="box-text mb-2">{{ obj.content }}</p>
<span class="username">{{ obj.username }}</span>
</div>
{% endfor %}
<div class="modal fade" id="deletePost" tabindex="-1">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Delete Post?</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<p>Are you sure you want to delete your post?</p>
</div>
<div class="modal-footer">
<button type="button" class="rvg-button-small" data-bs-dismiss="modal">Cancel</button>
<button type="button" class="rvg-button-small">Delete</button>
</div>
</div>
</div>
</div>
我实现AJAX的方式是使用
<a class="dropdown-item" data-bs-toggle="modal" data-bs-target="#editPost" onclick="EditPost('{{ obj.id }}')">
<a class="dropdown-item" data-bs-toggle="modal" data-bs-target="#deletePost" onclick="DeletePost('{{ obj.id }}')">
const DeletePost = (post_id) => {
fetch("/" + post_id + "/delete/", {
method: "POST",
credentials: 'same-origin',
headers: { "X-CSRFToken": getCookie("csrftoken") },
})
.then((res) => res.json())
.then((data) => {
document.getElementById(`post${post_id}`).remove()
console.log("successfully deleted")
}).catch((e) => alert("Error deleting post."));
}
【问题讨论】:
标签: javascript python html django ajax