python - 预填充 Flask-WTForm IntegerField

标签 python flask wtforms flask-wtforms

简单形式:

class AdjustPWMForm(Form):
    dutyCycle = IntegerField('dutycycle')
    #dutyCycle = IntegerField('dutycycle', default=44)

查看函数:

 def adjust():
    user = g.user
    form = AdjustPWMForm()
    form.dutyCycle.data = 55
    if form.validate_on_submit():
        dutyCycle = form.dutyCycle.data
        print('result %s', dutyCycle)
        return redirect(url_for('statusPage'))

    return render_template('adjust.html', title='Adjust PWM', user=user, form=form)

提交表单时,无论输入什么内容,结果始终为 55。如果我注释掉 55 行,并取消注释 default=44 的行,表单可以正常工作,但我确实需要能够设置预填充值(它将从数据库中检索)。

似乎我遗漏了一些非常明显的东西,但我四处寻找却无法弄清楚。

我发现 change_username 中的部分在 wtforms 中很有用这导致我:

def adjust():
    user = g.user
    form = AdjustPWMForm(dutyCycle=55)
    if form.validate_on_submit():
        dutyCycle = form.dutyCycle.data
        return redirect(url_for('statusPage'))

    return render_template('adjust.html', title='Adjust PWM', user=user, form=form)

这是实现此目标的最佳方式吗?

最佳答案

您可以在 GET 请求上设置默认值

def adjust():
    user = g.user
    form = AdjustPWMForm()
    if request.method == 'GET':
        form.dutyCycle.data = 55
    if form.validate_on_submit():
        dutyCycle = form.dutyCycle.data
        print('result %s', dutyCycle)
        return redirect(url_for('statusPage'))
    return render_template('adjust.html', title='Adjust PWM', user=user, form=form)

或者在类中设置一个默认值

class AdjustPWMForm(Form):
    dutyCycle = IntegerField('dutycycle', default=55)

如果默认值适用于此表单的所有实例,我会在类定义中设置默认值。如果我需要根据某些其他查找为某个字段设置默认值,我会使用 form = AdjustPWMForm(dutyCycle=55) 方式进行设置。

关于python - 预填充 Flask-WTForm IntegerField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26343254/

相关文章:

Python字符串属性

python - 在python中高效处理大型二进制文件

django - 通过解析yaml文件创建表单

Python/SQLAlchemy "or"功能

python - 如何使用 SQLAlchemy 在模型中进行表单验证?

python - 在 Web 浏览器中显示 Linux 命令的输出 - Python

python - Python中的正则表达式从右到左解析

python - 检查 Python Flask 中是否存在 post 值

python - 每个 Flask session 存储大数据或服务连接

javascript - 如何让 Flask 为我的 .js 文件提供服务?