[英]Prepopulate Flask-WTForm IntegerField
简单的形式:
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)
形式进行设置。
我通常在“ 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)
代替
form.dutyCycle.data = 55
采用
form.dutyCycle.process_data(55)
data
属性保存验证后用户放置的数据。 您通过分配给data
来覆盖用户输入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.