简单形式:
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行,并取消注释默认值= 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)
这是实现这一目标的最佳方法吗?
答案 0 :(得分:3)
您可以在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)
方式设置它。
答案 1 :(得分:1)
我经常在" POST"之后预填充表格。方法,不指定请求方法(GET或POST)。 由于我没有在POST方法之前预先填充,预填充不会影响POST方法带来的任何新值;因为我没有指定任何" GET"或" POST"方法,如果POST方法失败,它仍然会预先填充。
def foo():
form = MyForm(request.form)
if request.method == 'POST' and form.validate:
my_code
form.dutyCycle.data = 55
render_template('my_template', form=form)
答案 2 :(得分:0)
而不是
form.dutyCycle.data = 55
使用
form.dutyCycle.process_data(55)
data
属性在验证后保存用户放置的数据。您通过分配到data
来覆盖用户输入。