渲染Flask在一个有序列表中重写RadioField行/按钮

时间:2016-12-06 02:36:36

标签: python html flask jinja2 flask-wtforms

我想知道是否可以让Flask WTForms RadioField呈现有序列表中的单选按钮列表而不是无序列表。我目前的jinja2模板如下:

{% extends "base.html.j2" %}

{% block content %}

<form action="/test" method="POST">
  {% if test_form.errors %}
    {{ test_form.errors }}
  {% endif %}

  {{ test_form.csrf_token }}
  {% for qa in test_form.question_attempts %}
    <div class="well">
      <div>
        {{ qa.label }}
      </div>
      <div>
        {{ qa }}
      </div>
    </div>
  {% endfor %}
  {{ test_form.submitfield(class="btn btn-success") }}
</form>

{% endblock %}

qa变量是RadioField输入。

编辑:

为了澄清,test_form包含一个RadioField列表,它是question_attempts。我想做的是让每个qa在有序列表中呈现单选按钮和相关的单选按钮文本,而不是无序列表。

1 个答案:

答案 0 :(得分:2)

在查看WTForms documentation时,我最初错过了RadioFields描述下面的部分,该部分描述了默认情况下如何呈现单选按钮列表。我将在下面显示:

Product

这最终会在无序列表中呈现单选按钮和相关文本。由于我正在创建一个用户可以进行测试的应用程序,因此我想在一个&#34; A列表中呈现答案选项。 B.等。&#34;这很容易做 - 我只需要明确指定如何呈现{% for subfield in form.radio %} <tr> <td>{{ subfield }}</td> <td>{{ subfield.label }}</td> </tr> {% endfor %} 形式的无线电字段。我将在下面显示我的更新代码:

question_attempt

现在,表单呈现单选按钮字段和有序列表!

虽然显式编写模板可以让您更好地控制字段的呈现方式,但您需要确保表单的每个组件都在模板中呈现。否则,来自这些字段的数据将不会包含在已发布的数据中。对于需要用户输入的字段(因为您不会看到它们),这将是显而易见的,但如果您使用隐藏字段作为内务管理数据,则会导致问题。