我有我想编辑的帖子。问题是它们在for循环中,我不知道用户会点击哪个。我怎么能这么做
模板:
{% for post in posts %}
{% if request.user == post.poster %}
<a id="editPost-{{ post.id }}" href="javascript:;" style="display: block;">Edit</a>
<form id="editForm-{{ post.id }}" style="display: none;" method="POST" action="{% url 'editPost' post.id %}">
{% csrf_token %}
<input type="hidden" name="_method" value="PUT">
<div class="form-group">
<textarea class="form-control">{{ post.content }}</textarea>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
{% endif %}
<p id="postContent-{{ post.id }}">{{ post.content }}</p>
</div>
{% endfor %}
JS:
document.addEventListener("DOMContentLoaded", function () {
const editBtn = document.querySelector('#editPost');
const postContent = document.querySelector('#postContent');
const editForm = document.querySelector('#editForm');
editBtn.style.display = 'block';
postContent.style.display = 'block';
editForm.style.display = 'none';
editBtn.addEventListener('click', () => {
editBtn.style.display = 'none';
editForm.style.display = 'block';
postContent.style.display = 'none';
});
});
1条答案
按热度按时间vcudknz31#
实际上,当生成id时,您可以将其传递给www.example.com中的django表单forms.py,而不是尝试使用HTMX将值拉到页面上。您甚至可以创建一个init函数或某种类型的函数来查看下一个ID的数据库值。
例如:
甚至可能是:
然后在你的javascript中,确保在附加任何事件监听器之前等待页面加载表单。推荐使用经典的jquery行: