Flask wtform RadioField标签不呈现

时间:2014-12-30 12:58:19

标签: python flask-wtforms

使用以下表格时:

class TextForm(Form):
    example = RadioField('Choice 1:', choices=[('A','Option A'),('B','Option B')])
    key = RadioField('Choice 2:', choices=[('1', 'Option 1'), ('2', 'Option 2')])
    submit = SubmitField('Submit')

我期待看到:

选择1:

  • 选项A
  • 选项B

选择2:

  • 选项1
  • 选项2

相反,我没有获得如下标签:

  • 选项A
  • 选项B
  • 选项1
  • 选项2

我错过了什么?

3 个答案:

答案 0 :(得分:4)

我遇到了同样的问题。

quick_form ”宏的作者可能打算使用它,或者更可能是他/她错过了一行代码来渲染出RadioField的标签,因为对其他类型也是如此的领域。

要破解它,找到文件“ bootstrap / wtf.html ”,其中定义了宏“ quick_form ”。

添加以下行:

{{field.label(类= “控制标签”)|安全}}

循环前的

{% for item in field -%}
  <div class="radio">
    <label>
      {{item|safe}} {{item.label.text|safe}}
    </label>
  </div>
{% endfor %}

希望这适合你。

答案 1 :(得分:3)

我没有使用quick_form但是如果您要渲染字段标签,则需要将{{ field.foo.label }}{{ field.foo }}放置为字段标签以显示这样对我有用:

<form method="POST" action="/">
    {{ form.hidden_tag() }}
    <h3>{{ form.example.label }}</h3>
    <p>{{ form.example }}</p>
    <h3>{{ form.key.label }}</h3>
    <p>{{ form.key }}</p>
    {{ form.submit }}
</form>

更新

刚试过 flask-bootstrap ,如果渲染上面的字段标签和字段(而是使用wtf.form_field,它应该有效,但是我没有看到任何关于{ {1}},也许是一个错误?无论如何,这是工作样本:

quick_form

希望这会有所帮助,并输出:

enter image description here

答案 2 :(得分:3)

这是Flask-Bootstrap中的错误,已打开两个PR来解决此问题(#159#166)。

当前,如果您使用Bootstrap 4,则可以尝试使用Bootstrap-Flask,它是Flask-Bootstrap的替代品。