当前位置:实例文章 » 其他实例» [文章]Flask_使用flask_marshmallow序列化数据

Flask_使用flask_marshmallow序列化数据

发布人:shili8 发布时间:2024-12-29 02:59 阅读次数:0

**Flask 使用 Flask-Marshmallow 序列化数据**

在构建 RESTful API 时,序列化数据是非常重要的一步。Flask-Marshmallow 是一个流行的 Python 库,可以帮助我们轻松地将数据转换为 JSON、XML 等格式。下面,我们将一步一步地讲解如何使用 Flask-Marshmallow 序列化数据。

### 安装依赖首先,我们需要安装 Flask 和 Flask-Marshmallow 的依赖:

bashpip install flask flask-marshmallow


### 创建 Flask 应用接下来,我们创建一个简单的 Flask 应用:

from flask import Flask, jsonifyapp = Flask(__name__)

@app.route('/')
def index():
 return 'Hello World!'

if __name__ == '__main__':
 app.run(debug=True)


### 定义数据模型我们定义一个简单的数据模型,例如 User:

from marshmallow import Schema, fieldsclass UserSchema(Schema):
 id = fields.Integer(dump_only=True) # dump_only=True 表示只在序列化时使用 name = fields.Str(required=True)
 age = fields.Int()


### 序列化数据现在,我们可以使用 Flask-Marshmallow 序列化 User 数据:

from flask_marshmallow import Marshmallowma = Marshmallow(app)

class User(ma.Model):
 id = ma.Integer(dump_only=True) # dump_only=True 表示只在序列化时使用 name = ma.Str(required=True)
 age = ma.Int()

user_data = {
 'id':1,
 'name': 'John Doe',
 'age':30}

schema = UserSchema()
data, errors = schema.load(user_data)

if errors:
 print(errors)
else:
 print(data) # {'id':1, 'name': 'John Doe', 'age':30}


### 序列化列表数据如果我们需要序列化一个列表数据,例如 User 列表,我们可以使用 `many=True` 参数:

class UserSchema(Schema):
 id = fields.Integer(dump_only=True)
 name = fields.Str(required=True)
 age = fields.Int()

users_data = [
 {'id':1, 'name': 'John Doe', 'age':30},
 {'id':2, 'name': 'Jane Doe', 'age':25}
]

schema = UserSchema(many=True) # many=True 表示序列化列表数据data, errors = schema.load(users_data)

if errors:
 print(errors)
else:
 print(data) # [{'id':1, 'name': 'John Doe', 'age':30}, {'id':2, 'name': 'Jane Doe', 'age':25}]


### 使用 Flask 序列化数据最后,我们可以使用 Flask 序列化 User 数据:

@app.route('/users')
def get_users():
 users_data = [
 {'id':1, 'name': 'John Doe', 'age':30},
 {'id':2, 'name': 'Jane Doe', 'age':25}
 ]

 schema = UserSchema(many=True)
 data, errors = schema.load(users_data)

 if errors:
 return jsonify({'error': str(errors)}),400 else:
 return jsonify(data)

if __name__ == '__main__':
 app.run(debug=True)


通过以上步骤,我们可以轻松地使用 Flask-Marshmallow 序列化数据。

其他信息

其他资源

Top