【问题标题】:Python Marshmallow not detecting error in required fieldPython Marshmallow 未在必填字段中检测到错误
【发布时间】:2019-01-24 10:59:58
【问题描述】:

我正在使用 marshmallow 来验证 API 的数据。但是,它不适用于必填字段。

以下代码适用于长度验证。

password = fields.String(validate = validate.Length(min=6))

但是,必填字段不起作用。它只是忽略并继续而不显示任何错误。

password = fields.String(required = True) //not working

【问题讨论】:

  • 我们需要更多上下文,您是如何验证 API 数据的?
  • 我使用棉花糖创建了一个模式类,并使用该模式进行验证。我在 request.form 中有数据,我正在使用带有负载的模式( schema.load(request.form).errors),其中模式是我的模式类的对象。
  • 您使用的是哪个版本的棉花糖?这可能与版本有关,github.com/marshmallow-code/marshmallow/issues/377

标签: python flask marshmallow


【解决方案1】:

请检查这个例子:

from marshmallow import Schema, fields

class User(Schema):
    email = fields.Str()
    password = fields.Str(required=True)


User().load({'email': 'abc@gmail.com'}) # raise Exception
User().load({'email': 'abc@gmail.com', 'password': ''}) # Not raise exception

您的request.form 始终包含字段password,但它将为空。

【讨论】:

  • 所以它将检测空白作为给定值,因此不会引发错误,我们必须检查空白数据?
  • 是的,我们必须检查空白数据。检查这个:marshmallow.readthedocs.io/en/3.0/…
猜你喜欢
  • 1970-01-01
  • 2016-07-04
  • 1970-01-01
  • 2016-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-05
  • 2020-06-12
相关资源
最近更新 更多