gpt4 book ai didi

python - Python 中的 webargs/Marshmallow 可以修改字段,而不仅仅是验证它吗?

转载 作者:行者123 更新时间:2023-12-04 03:08:40 24 4
gpt4 key购买 nike

我正在将 Flask 与 Flask-restful 和 webargs 一起使用(使用 Marshmallow 作为其后端)。目前我可以用这个来拉入我想要的领域:

class AddGroup(Resource):
args = {
'name': fields.Str(missing=None),
'phone': fields.Str(missing=None),
}

@use_args(args)
def get(self, args):
name = args['name'].strip()
# ... some GET-related code ...

@use_args(args)
def post(self, args):
name = args['name'].strip()
# ... some POST-related code ...
到现在为止还挺好。但我真正想做的是确保 args['name']进入各种方法(“post”、“get”等)时已经去除了空格,所以我不必每次都手动处理每个变量。 (剥离空格只是一个例子 - 它可能是其他一些简单或复杂的转换)
有没有办法(通过覆盖 String 字段、定义我自己的字段或其他方式)允许 args在它们到达类方法之前进行预处理?

最佳答案

webargs正在使用 marshmallow要制作模式,您可以使用 pre_loadpost_load .在棉花糖的文档中有一个带有“slugify”字符串的例子:

from marshmallow import Schema, fields, pre_load

class UserSchema(Schema):
name = fields.Str()
slug = fields.Str()

@pre_load
def slugify_name(self, in_data, **kwargs):
in_data['slug'] = in_data['slug'].lower().strip().replace(' ', '-')
return in_data

schema = UserSchema()
result = schema.load({'name': 'Steve', 'slug': 'Steve Loria '})
result['slug'] # => 'steve-loria'
您可以在此处查看详细文档: https://marshmallow.readthedocs.io/en/latest/extending.html#pre-processing-and-post-processing-methods

关于python - Python 中的 webargs/Marshmallow 可以修改字段,而不仅仅是验证它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46938981/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com