WTForms:在编写自定义验证时传递额外的参数

Neo*_*Neo 1 python wtforms

为wtforms编写自定义验证时,是否可以传递额外的参数(例如request)

例如

class MyForm(Form):
  name = TextField('Name', [Required()])

  def validate_name(form, field):
    if len(field.data) > 50:
        raise ValidationError('Name must be less than 50 characters')
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我需要传递请求对象(或非表单对象)。有什么办法吗?

Tho*_*zco 5

进行操作的更简单方法是将request对象传递到表单并将其存储为属性。

您可以通过__init__方法或通过执行此操作my_form.request = request

然后,你validate_name的方法可以访问requestself.request