我的网络应用程序中有很多“民意调查”,我将它们全部显示在同一页面上,但无法弄清楚如何为所有表单提交一个提交(投票)按钮。截至目前,他们都为每个问题都有自己的投票按钮,但我希望只有一个在底部提交所有内容。
此模板的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 %}
有一种简单的方法吗?我感谢任何帮助!谢谢。
答案 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}}传递给模板?除非你有充分的理由不这样做,否则你可能会为自己制造麻烦。