Flask wtform RadioField 标签不渲染

zan*_*nzu 4 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')
Run Code Online (Sandbox Code Playgroud)

我期待看到:

选择一:

  • 选项A
  • 选项B

选择2:

  • 选项1
  • 选项2

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

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

我缺少什么?

Joh*_*ang 6

我刚刚遇到了同样的问题。

这可能是“ quick_form ”宏的作者的意图,或者更可能的是他/她错过了一行代码来渲染 RadioField 的标签,就像其他类型的字段一样。

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

添加这一行:

{{field.label(class="control-label")|安全}}

在“for”循环之前:

{% for item in field -%}
  <div class="radio">
    <label>
      {{item|safe}} {{item.label.text|safe}}
    </label>
  </div>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

希望这对你有用。


Gre*_* Li 5

这是 Flask-Bootstrap 中的一个错误,有两个 PR 来修复这个问题(#159#166)。

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