Django Forms:如何在不更改URL的情况下避免隐藏输入

时间:2018-04-03 04:58:43

标签: python django

我遇到了一个我无法完全解决的问题。

我有一个模型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。假设我的list of questions中有一个template,每个form都允许用户投票 - 那么我怎么知道用户在{{}}中使用了哪一个投票? {1}}?无论views.pyvote_form还是Form实例,ModelForm都只包含有关用户的是/否选择的信息(也就是说,它不包含例如问题的request.POST

解决此问题的一种方法是让pk引导至新submit button,并将问题的url作为pk传递。

我的另一种方法是指定通过slug的{​​{1}}字段

现在 - 除了更改hidden-input和允许question-object's pk.之外,我还可以使用另一种方法来区分各种questions吗?

此外 - 如果我确保验证url,并检查通过该hidden input的{​​{1}}是否属于hidden input允许用户投票,这是一个负责任和安全的方式吗?

1 个答案:

答案 0 :(得分:0)

另一种方法是使用AJAX

<button type="button" onclick="Voting(vote, pk)">Think</button>

此外,AJAX允许您在不进行页面刷新的情况下与服务器通信