zoukankan      html  css  js  c++  java
  • flask-序列化

    序列化

    示例代码

    from flask import Flask
    from flask_restful import Resource, Api, marshal, fields, marshal_with
    
    app = Flask(__name__)
    api = Api(app)
    
    class User:
        def __init__(self):
            self.name = '张三'
            self.age = 20
            self.height = 1.8
            self.scores = [80, 75]
            self.info = {
                'gender': True
            }
    
        def to_dict(self):  # 模型的属性转为字典的键值对
            return {
                'username': self.name,
                'age': self.age
            }
    
    
    # 定义序列化的转换规则
    user_fields = {
        "username": fields.String(attribute='name'),  # attribute设置字段对应的属性名
        'age': fields.Integer,
        'weight': fields.Float(default=75.3),  # default取不出属性值时,可以使用默认值
        'scores': fields.List(fields.Integer),
        'info': fields.Nested({'gender': fields.Boolean})
    }
    
    
    class DemoResource(Resource):
        method_decorators = {'post': [marshal_with(user_fields)]}
    
        def get(self):
            user = User()
            # 对模型对象进行序列化转换  返回dict
            data = marshal(user, user_fields, envelope='data')
            return data
    
        def post(self):
            user = User()
            # 如果使用marshal_with装饰器, 则可以直接返回模型对象
            return user
    
        def put(self):
            user = User()
            return user.to_dict()  # 使用自定义方法来转换模型数据
    
    
    api.add_resource(DemoResource, '/')
    
    
    if __name__ == '__main__':
        app.run(debug=True)
    
  • 相关阅读:
    第 2 章 MySQL 架构组成
    MySql学习笔记
    大型项目成功的关键
    内连接区别外连接
    UML2.0
    软件架构师之路
    UVA
    ZOJ
    UVA
    UVA
  • 原文地址:https://www.cnblogs.com/oklizz/p/11385067.html
Copyright © 2011-2022 走看看