Django具有一个提交按钮的多个表单

时间:2015-07-15 19:00:31

标签: html django django-templates

我的网络应用程序中有很多“民意调查”,我将它们全部显示在同一页面上,但无法弄清楚如何为所有表单提交一个提交(投票)按钮。截至目前,他们都为每个问题都有自己的投票按钮,但我希​​望只有一个在底部提交所有内容。

此模板的HTML代码如下:

{% if latest_question_list %}
  {% for question in latest_question_list %}
  <h2>{{ question.question.text }}</h2>
  <form action="{% url 'polls:vote' question.id %}" method="post">
  {% csrf_token %}
  {% for choice in question.choice_set.all %}

      <input type="radio" name="choice" id="choice{{ for loop.counter }}" value="{{ choice.id }}" />
      <label for="choice{{ forloop.counter }}">{{ choice.choice_text }}</label><br />

   {% endfor %}

   <input type="radio" name="choice" value="">Other: <input type="text" />
   <br><input type="submit" value="Vote" /></br>
   </form>
   {% endfor %}

{% else %}
   <p>No polls are available.</p>
{% endif %}

有一种简单的方法吗?我感谢任何帮助!谢谢。

1 个答案:

答案 0 :(得分:2)

请参阅 - django submit two different forms with one submit button

Django的表单类,当从请求提供数据时,查看POST或GET以按元素id查找值。表单中的所有字段都必须具有唯一ID,或者在视图中构建表单时使用Django form's prefix keyword

简而言之 - 将所有表单元素放在单个html标记中,使用prefix关键字(每个Django表单都有唯一的前缀,只要在视图中构造表单;这将改变输入/ select / radiobox元素'id属性),然后从那里开始。为每个表单实例提供GET或POST和
你很高兴。

但是,上面的代码显示您手动填充每个字段的ID。相反,为什么不将每个表单作为包含{{form_name.as_p}}传递给模板?除非你有充分的理由不这样做,否则你可能会为自己制造麻烦。