Python marshmallow中的blob/bytes字段

5
我已经搜索了一段时间,想要验证字典的键是否具有值(必需),并且该值的类型是bytes。使用Marshmallow,但我没有找到任何可以工作的内容。
在Marshmallow参考文档中没有与bytes数据类型匹配的“基本”字段类型。因此,我认为它必须是自定义字段。
是否有人已经遇到这个问题?任何解决方法的提示?
谢谢

@cricket_007,我刚刚发布了答案,抱歉。 - marc
1个回答

14

嗯...解决方案很简单,只要阅读正确的文档页面,我就弄清楚了如何解决我的问题。

只需创建一个新类,该类继承自fields.Field,并重写_validate方法,如下所示:

class BytesField(fields.Field):
    def _validate(self, value):
        if not isinstance(value, bytes):
            raise ValidationError('Invalid input type.')

        if value is None or value == b'':
            raise ValidationError('Invalid value')

这是棉花糖模式图表:
class MySchema(Schema):
    // ...
    field = BytesField(required=True)
    // ...

就这样了。抱歉浪费了你的时间。


2
嗯,这对我很有帮助。谢谢。顺便说一下,我认为isinstance(value, bytes)type(value) is not bytes更好。 - Renard Korzeniowski
浪费你的时间 - eli
请在您使用的文档页面中添加引用。 - Marcio Carvalho

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接