我遇到了一个无法完全解决的问题。
我有一个模型Question
其中包含一个声明、有关提出它的用户的信息以及有关赞成票和反对票数量的信息。
在模板中,我的情况类似于以下内容:
{% for question in list_passed_with_questions %}
<p>{% question.statement %}</p>
<form method="post">
{% csrf_token %}
{{ vote_form.as_p }} #vote_form makes the user choose between 'yes'/'no'
<button type="primary">Think</button>
</form>
{% endfor %}
我的目标是能够知道每个用户投票给哪个question
。假设我的template
中有一个list of questions
,每个都有一个允许用户投票的form
- 那么我怎么知道用户在views.py
中使用他们的输入时投票给哪一个?无论vote_form
是Form
实例还是ModelForm
实例,request.POST
都将仅包含有关用户的"是/否"选择的信息(即,它不会包含例如问题pk
)。
解决这个问题的一种方法是让submit button
引出一个新的url
,并将回答的问题pk
作为slug
传递。
我想要的另一种方法是指定一个传递question-object's pk.
的hidden-input
字段
现在- 除了更改url
并允许hidden input
之外,我可以使用另一种方法来区分各种questions
?
此外- 如果我确保验证hidden input
,并检查通过该hidden-input field
pk
是否属于允许用户投票的question
,那会是一种负责任和安全的方式吗?
另一种方法是使用 AJAX
<button type="button" onclick="Voting(vote, pk)">Think</button>
此外,AJAX 允许您在不执行页面刷新的情况下与服务器通信