【问题标题】:Marshmallow @validates does not raise errorMarshmallow @validates 不会引发错误
【发布时间】:2018-09-07 14:46:36
【问题描述】:

全部。我使用 Flask 作为主要框架和 Marshmallow 包编写用于序列化 JSON 数据的 API 项目。 我想创建玩家实例,但在创建之前验证他的昵称。 查看:

def create_player()
    ...
    try:
        data = player_schema.load(request_data)
        # when error raised excect case does not handle it
        # but data has 2 dicts: 
        # UnmarshalResult(data={}, errors={'nickname': ['Error!!!']})
    except ValidationError as err:
       return jsonify(err.messages), 400
    ...

架构:

class PlayerSchema(Schema):

    nickname = fields.Str(required=True)
...

    @validates('nickname')
    def validate_nickname(self, value):
        raise ValidationError('Error!!!')

【问题讨论】:

    标签: python python-3.x flask marshmallow


    【解决方案1】:

    这是因为默认情况下,在棉花糖 2 中,模式不会因错误而引发。

    您需要传递strict 元参数:

    class PlayerSchema(Schema):
    
        nickname = fields.Str(required=True)
    
        class Meta:
            strict = True
    

    在 marshmallow 3 中,模式总是在出错时引发。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多