如何从django获取文章的id并在javascript上使用?

rta7y2nd  于 2023-05-08  发布在  Go
关注(0)|答案(1)|浏览(180)

我有我想编辑的帖子。问题是它们在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';
});
});
vcudknz3

vcudknz31#

实际上,当生成id时,您可以将其传递给www.example.com中的django表单forms.py,而不是尝试使用HTMX将值拉到页面上。您甚至可以创建一个init函数或某种类型的函数来查看下一个ID的数据库值。
例如:

class AccountForm(forms.Form):
    username = forms.CharField(label='Name', max_length=100, required=True, widget=forms.TextInput(attrs={'id':'NameEntry'}))

甚至可能是:

class AccountForm(forms.Form):
    username = forms.CharField(label='Name', max_length=100, required=True, widget=forms.TextInput(attrs={'id':nextLoopID()}))

然后在你的javascript中,确保在附加任何事件监听器之前等待页面加载表单。推荐使用经典的jquery行:

$( document ).ready(function() {
// Your code here
});

相关问题