使用Flask-WTForms选择性地需要字段的正确方法是什么?

Way*_*ner 5 python flask wtforms flask-wtforms

我正在使用Flask与Flask-WTForms,我正在编写一个管理页面,可以更新用户的值 - 包括密码.

我正在使用我用于注册的相同表单页面,但由于不必更新密码,我不想要它.使用Flask-WTForms进行此操作的正确方法是什么?

我已经进入UserFormforms.py,我正在考虑制作一个自定义验证器,并且有一个文件级require_password选项可以覆盖默认检查.我是WTForms的新手,对Flask来说有点新鲜.

Way*_*ner 4

这个解决方案似乎可以满足我的要求:

forms.py

from flask.ext.wtf import Optional

def make_optional(field):
    field.validators.insert(0, Optional())

#Rest of code here...
Run Code Online (Sandbox Code Playgroud)

然后在我的烧瓶端点内我可以调用:

user_form = UserForm()
forms.make_optional(user_form.password)
if user_form.validate_on_submit():
    #Go on your merry way!
Run Code Online (Sandbox Code Playgroud)

这似乎做了我想要的事情 - 保留所有其他验证(例如确认),同时如果没有密码则忽略任何内容。