Dav*_*ite 5 python flask flask-restful webargs marshmallow
我将 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 ...
Run Code Online (Sandbox Code Playgroud)
到目前为止,一切都很好。但我真正想做的是确保args['name']
进入各种方法(“post”、“get”等)时已经删除了空格,这样我就不必每次都手动处理每个变量。(剥离空白只是一个例子 - 它可能是其他一些简单或复杂的转换)
有没有一种方法(通过覆盖 String 字段、定义我自己的字段或其他方式)允许args
在到达类方法之前对其进行预处理?
由于webargs
正在使用marshmallow
来制作架构,因此您可以使用pre_load
或post_load
。Marshmallow 的文档中有一个“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'
Run Code Online (Sandbox Code Playgroud)
您可以在此处查看详细文档:https://marshmallow.readthedocs.io/en/latest/extending.html#pre-processing-and-post-processing-methods
归档时间: |
|
查看次数: |
2112 次 |
最近记录: |