【问题标题】:Django multiple forms with one submit buttonDjango 多个表单,一个提交按钮
【发布时间】:2015-10-04 23:49:54
【问题描述】:

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

我的这个模板的 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 %}

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

【问题讨论】:

    标签: html django django-templates


    【解决方案1】:

    见 - django submit two different forms with one submit button

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

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

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

    【讨论】: