[英]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.