Flask WTForms 动态默认值
Flask WTForms Dynamic Default Value
我想要一个表单的动态默认值。这将是上次使用时输入的内容。
看到说创建后修改默认值,然后使用process()方法。这适用于更新它(我看到默认显示在网页上),但是当表单提交时我收到一个错误,说 CSRF 令牌丢失。 在 chrome devtools我看到表单有一个 input_id= 'csrf_token'
和一个值,所以不确定发生了什么?
class weight(FlaskForm):
weight = StringField('Enter your weight', validators=[DataRequired()])
submit = SubmitField('Submit')
last_weight = get_last_weight() # query database function, returns float (e.g 85.4)
form = weight()
form.weight.default = last_weight
form.process()
一个相关的问题,这是设置动态默认值的最佳方式吗?我试过了
StringField('Enter your weight', validators=[DataRequired()], default=get_last_weight())
如文档所述
default – The default value to assign to the field, if no form or object input is provided. May be a callable.
所以我认为该函数是可调用的(如果我错了请告诉我!)但是我收到一条错误消息说该函数正在应用程序上下文之外使用,所以我认为该函数也被调用了早期的。这似乎是一项常见任务,所以我猜我错过了什么。
谢谢!
这就是我喜欢处理动态表单构建的方式
def buildWeightForm(last_weight):
class weight(FlaskForm):
weight = StringField('Enter your weight', default=last_weight, validators=[DataRequired()])
submit = SubmitField('Submit')
return weight()
关于你的第二个问题,如果你在执行此操作时遇到错误
StringField('Enter your weight', validators=[DataRequired()], default=get_last_weight())
尝试以下操作(从函数调用中删除括号):
StringField('Enter your weight', validators=[DataRequired()], default=get_last_weight)
我想要一个表单的动态默认值。这将是上次使用时输入的内容。
看到input_id= 'csrf_token'
和一个值,所以不确定发生了什么?
class weight(FlaskForm):
weight = StringField('Enter your weight', validators=[DataRequired()])
submit = SubmitField('Submit')
last_weight = get_last_weight() # query database function, returns float (e.g 85.4)
form = weight()
form.weight.default = last_weight
form.process()
一个相关的问题,这是设置动态默认值的最佳方式吗?我试过了
StringField('Enter your weight', validators=[DataRequired()], default=get_last_weight())
如文档所述
default – The default value to assign to the field, if no form or object input is provided. May be a callable.
所以我认为该函数是可调用的(如果我错了请告诉我!)但是我收到一条错误消息说该函数正在应用程序上下文之外使用,所以我认为该函数也被调用了早期的。这似乎是一项常见任务,所以我猜我错过了什么。
谢谢!
这就是我喜欢处理动态表单构建的方式
def buildWeightForm(last_weight):
class weight(FlaskForm):
weight = StringField('Enter your weight', default=last_weight, validators=[DataRequired()])
submit = SubmitField('Submit')
return weight()
关于你的第二个问题,如果你在执行此操作时遇到错误
StringField('Enter your weight', validators=[DataRequired()], default=get_last_weight())
尝试以下操作(从函数调用中删除括号):
StringField('Enter your weight', validators=[DataRequired()], default=get_last_weight)