有没有一种方法可以从视图函数中访问WTForms RadioField标签?

时间:2019-08-06 12:49:13

标签: python python-3.x flask flask-wtforms wtforms

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

wtforms documentation中,RadioField(和SelectField)都具有参数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参数以获取标签,但是似乎应该有更好的方法来执行此操作。

1 个答案:

答案 0 :(得分:0)

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

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

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