html - Django 多个表单,一个提交按钮

标签 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 %}

有没有简单的方法可以做到这一点?我很感激任何帮助!谢谢。

最佳答案

参见 - django submit two different forms with one submit button

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

简而言之 - 将所有表单元素放在一个 html 标签中,使用 prefix 关键字(在 View 中构造表单时,每个 Django 表单都有唯一的前缀;这将改变 input/select/radiobox 元素' id 属性),然后从那里开始。向每个表单实例提供 GET 或 POST 并
你可以走了。

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

关于html - Django 多个表单,一个提交按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31438860/

相关文章:

javascript - 为什么在文件输入上触发单击事件也会触发表单上的提交事件?

javascript - CSS复选框,如何使一个元素只有在另一个元素被选中时才取消选中

html - 兼容的 HTML 和 CSS

django 模板和列表字典

单独文件中的 Javascript 在 Django 中不起作用

javascript - IE 10 不会在文本输入上重新应用填充

django - 使 Django 测试用例数据库对 Celery 可见

python - tastypie 和 django 测试用例

python - 如何在 Django Admin 中向用户显示数据库错误

python - Django 1.7 - 更新 base_site.html 不工作