点击上方“python学习与大数据分析”关注
![图片[1]-Flask开发后端接口,如何实现各功能模块独立开发?-JieYingAI捷鹰AI](https://www.jieyingai.com/wp-content/uploads/2025/01/1737756284101_0.jpg)
在后端api接口开发过程中,通常不会把所有的功能模块接口放在一个文件里,而是将不同的功能模块解耦放在不同的目录文件中。但当前网上的很多flask的入门案例中,仅在同一个文件中列出了一两个简单示例。很多同学对如何实现不同模块的接口接口还有存在疑惑的。
本文将给大家介绍如何实现不同功能模块功能接口的解耦,为了实现解耦的效果,我们需要引入蓝图(blueprint)。
在Python Web开发中,Flask框架是一个轻量级的选择。当项目变得复杂时,我们需要一种方式来组织和模块化我们的代码,以便于管理和维护。这就是Flask中的Blueprint发挥作用的地方。
什么是Blueprint?
Blueprint是Flask的一个特性,它允许我们将一个大的应用划分为更小的、可重用的部分。每个Blueprint都可以包含路由、静态文件、模板以及自定义错误页面等。这样可以使得代码更加整洁,便于管理。
如何创建和注册Blueprint?
首先,我们先创建一个py文件,文件名为auth.py。这个文件中我们主要用来编写登录、认证相关的接口。
在auth.py文件中,我们先导入Blueprint类并创建一个新的蓝图对象。通常我们会在单独的模块中创建Blueprint以实现更好的模块化:
from flask import Blueprintbp = Blueprint('auth', __name__, url_prefix='/auth')
在这个例子中,我们创建了一个名为auth的蓝图,它的命名空间(__name__)来自于当前模块名,同时我们还为这个蓝图指定了URL前缀/auth。
接下来,我们可以在auth.py文件里的这个蓝图上定义路由和视图函数,就像我们在普通Flask应用中那样:
'''describe:来自【python学习与大数据分析】公众号的例子date:2023/12/3'''from flask import Blueprint, jsonifyauth_blueprint = Blueprint('auth', __name__, url_prefix='/auth')def home():response_data={"code": 200,"msg": "来自【python学习与大数据分析】公众号的例子","data": {"data_list": [{'id': 1, 'name': '张三', 'age': 20}, {'id': 2, 'name': '李四', 'age': 21}]}}return jsonify(response_data)def login():response_data={"code": 200,"msg": "登录成功,来自【python学习与大数据分析】公众号的例子","data": {"token": "55555555555555555555"}}return jsonify(response_data)
现在我们有了一个包含两个路由的蓝图,下一步就是将其注册到Flask应用中,这通常在主程序文件中完成,那么接下来我们要创建系统主入口程序文件main.py,并将刚才登录模块创建的蓝图注册到主入口程序中。
'''describe:来自【python学习与大数据分析】公众号的例子date:2023/12/3'''from flask import Flaskfrom auth import auth_blueprint # 导入刚刚创建的蓝图# 实例化一个Flask对象app = Flask(__name__)# 将登录认证模块的蓝图注册到app对象上app.register_blueprint(auth_blueprint)if __name__ == '__main__':app.run(host='0.0.0.0', port=5000, debug=True)
使用多个蓝图
上面的例子,只是创建了一个登录模块的蓝图,但我们的项目中肯定还会涉及到订单模块、客户管理模块或者其他实际项目中的功能模块,这个时候就需要使用多个蓝图。下面我们再创建一个订单模块的文件,命名为order.py。在文件中我们也同样先创建两个接口实例:
'''describe:来自【python学习与大数据分析】公众号的例子date:2023/12/3'''from flask import Blueprint, jsonifyorder_blueprint = Blueprint('order', __name__, url_prefix='/order')@order_blueprint.route('', methods=['GET'])def get_order():'''获取订单列表:return:'''# TODO: 这里实现订单列表接口,主要查询数据库获取订单列表,并返回给前端。response_data = {'code': 20000,'msg':'success','data': [{'order_id': 1234567890,'order_sn': '20231234567890','order_status': 1,'order_amount': 100.00,}]}return jsonify(response_data)@order_blueprint.route('', methods=['POST'])def create_order():'''创建订单:return:'''# TODO: 这里实现订单创建接口,主要接收前端传递过来的参数校验后生成订单数据,插入数据库后,并返回订单信息。response_data = {'code': 20000,'msg':'success','data': {'order_id': 1234567890,'order_sn': '20231234567890','order_status': 1,'order_amount': 100.00,'order_pay_amount': 100.00,}}return jsonify(response_data)
接下来,我们要将订单管理模块的蓝图注册到主应用入口程序文件中:
'''describe:来自【python学习与大数据分析】公众号的例子date:2023/12/3'''from flask import Flaskfrom auth import auth_blueprint # 导入刚刚创建的登录模块蓝图from order import order_blueprint # 导入刚刚创建的订单模块蓝图# 实例化一个Flask对象app = Flask(__name__)# 将登录认证模块的蓝图注册到app对象上app.register_blueprint(auth_blueprint)app.register_blueprint(order_blueprint)if __name__ == '__main__':app.run(host='0.0.0.0', port=5000, debug=True)
通过上面的例子,我们知道在flask多模块接口开发过程中,如果要实现不同功能模块间解耦,就需要使用到蓝图,然后不同的功能模块创建不同的文件,并在文件中创建蓝图、定义路由、接口功能函数,最后在主入口程序中,将不同模块的蓝图注册到主应用程序中即可。
欢迎感兴趣的小伙伴长期关注、点赞、转发
——END——








