【问题标题】:Is there a way to access WTForms RadioField labels from within a view function?有没有办法从视图函数中访问 WTForms RadioField 标签?
【发布时间】:2019-08-06 12:49:13
【问题描述】:

我正在开发一个简单的 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 参数来获取标签,但似乎应该有更好的方法来做到这一点。

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-18
      • 2019-08-29
      • 1970-01-01
      • 2015-05-12
      • 1970-01-01
      • 2011-10-23
      • 2023-04-01
      • 1970-01-01
      相关资源
      最近更新 更多