有没有办法从视图函数中访问 WTForms RadioField 标签?

Is there a way to access WTForms RadioField labels from within a view function?

我正在开发一个简单的 Web 应用程序,我有一些带有 wtforms.RadioField 的表单。我想知道是否有一种方法可以像访问字段数据一样从视图函数访问字段标签。

wtforms documentation 开始,RadioFields(和 SelectFields)都有参数 choices 和一个(值,标签)对列表。所以,如果我有一个简单的形式

import wtforms
import flask_wtf

class SimpleForm(flask_wtf.FlaskForm):
    select = wtforms.RadioField(
        'Select', 
        choices=[(1, 'a'), (2, 'b'), (3, 'c')], 
        validators=[wtforms.validators.DataRequired()]
    )
    submit = wtforms.SubmitField('submit')

在 html 中呈现表单后,视图函数将是

@app.route('/select', methods=['GET', 'POST'])
def select():
    form = SimpleForm()
    if form.validate_on_submit():
        value = form.select.data
        label = form.select.label  # I wish I could do this

我希望我问的很清楚。目前,我正在使用另一个带有映射到上面 choices 参数的值字典的函数来获取标签,但似乎应该有更好的方法来做到这一点。

无法直接向 RadioField 询问所选项目的标签(或元组)。但是,您可以询问该字段的选择并从中确定所选的一个:

value = form.select.data
choices = dict(form.select.choices)
label = choices[value]

多了一行,但还是很简洁的。如果您的字段的选择一直在变化并且您不想提供重新计算它们所需的状态,那么使用这种方法是值得的。