棉花糖@validates不会引发错误

时间:2018-09-07 14:46:37

标签: python python-3.x flask marshmallow

全部。我使用Flask作为主要框架以及用于序列化JSON数据的Marshmallow包编写API项目。 我想创建播放器实例,但在创建之前请先验证其昵称。 查看:

<script>
    $(function () {
        // Unstyled Example
        $.monte('#example1');

        // Styled Buttons Example
        // (see the CSS in the above style block)
        $.monte('#example2', {auto:false});

        // Callback Example
        // Format and append the HTML:
        $('#example3 > img').each(function(){
            $(this)
                .wrap('<div style="position:relative"/>')
                .parent()
                .append('<div><p>' + $(this).attr('alt') + '</p></div>')
                .append('<img src="frame.png" alt="" class="frame"/>');
        });
        // Hide the text on all but the center slide:
        $('#example3 div div').css({opacity: 0}).eq(0).css({opacity: 0.8});
        // Using the callbacks to reveal and hide the text:
        $.monte('#example3', {
            auto:false,
            callbackIn: function () {
                $(this[0]).find('div').animate({opacity: 0.8}, 450);
            },
            callbackAway: function () {
                $(this[0]).find('div').animate({opacity: 0}, 450);
            }
        });
    });
</script>

模式:

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
    ...

1 个答案:

答案 0 :(得分:2)

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

您需要传递strict元参数:

class PlayerSchema(Schema):

    nickname = fields.Str(required=True)

    class Meta:
        strict = True

在棉花糖3中(直到今天仍为beta,希望很快将被发布),模式总是在出错时引发。