Flask蓝图
最编程
2024-07-06 07:07:25
...
蓝图(Blueprint)在 Flask 中是一个用于组织多个模块化子应用的强大工具。它允许开发者将不同的功能模块划分到不同的包或目录中,使得大型项目更加易于管理和维护。
一、不使用蓝图
在不使用蓝图的情况下,可能会将所有的视图函数放在一个文件中,或者将它们分散在多个文件中,但都在同一个包内。
-
目录结构
-
-templates/ -views/ __init__.py user.py order.py -app.py
-
-
文件内容
-
# app.py from views import app if __name__ == '__main__': app.run()
-
# init.py from flask import Flask app = Flask(__name__) from . import order from . import user
-
# user.py from . import app @app.route('/user') def user(): return 'user'
-
二、使用蓝图
使用蓝图可以更好地组织项目结构,特别是在中大型系统中。
-
目录结构
-
- flask_project/ # 项目名 - src/ # 核心文件 - __init__.py # 包的初始化文件,实例化得到app对象 - static/ # 静态文件 - templates/ # 模板 - views/ # 视图函数和类 - user.py - order.py - manage.py # 启动文件
-
-
文件内容
-
# manage.py from src import app if __name__ == '__main__': app.run(debug=True, port=3333)
-
# __init__.py from flask import Flask app = Flask(__name__) from .views.user import user_app app.register_blueprint(user_app)
-
# user.py from flask import Blueprint user_app = Blueprint('user_app', __name__, url_prefix='/user') @user_app.route('/') def user_index(): return 'User Index Page'
-
-
使用蓝图步骤
-
实例化蓝图对象: 在每个视图模块中,创建一个蓝图实例,并指定蓝图的名字和模板文件夹(如果与默认位置不同)。
from flask import Blueprint user_app = Blueprint('user', __name__, template_folder='../templates')
-
使用蓝图注册路由和请求扩展: 使用蓝图对象来注册路由和请求钩子。
@user_app.route('/login') def login(): return 'login'
-
在应用中注册蓝图: 在主应用实例中,通过
register_blueprint
方法注册蓝图。可以指定一个url_prefix
,使得所有蓝图中的路由都会添加该前缀。from flask import Flask app = Flask(__name__) from . import user app.register_blueprint(user.user_app, url_prefix='/user')
-
推荐阅读
-
Flask 轻松入门:从零开始构建自己的 Web 应用程序 - 扩展讨论
-
如何理解 Flask 中的 ORM 技术
-
<Project-8.1 pdf2tx-MM> Python Flask 使用浏览器翻译 PDF 内容 2 个翻译引擎 简化中文结果 从 P8 改成 P8
-
配置 WSGI 服务器(Gunicorn)和 Nginx 反向代理服务器以部署 Flask 项目
-
flask 发送邮件
-
计算机毕业设计 基于 Flask + vue 的博客系统设计与实现 Python 毕业设计 Python 毕业设计题目 Flask 框架 Vue [含源代码 + 安装与调试]。
-
python flask 实现了 mock 接口
-
Vue.js 和 Flask/Django 后端共同开发研究
-
更好的方式在Flask中配置跨域Cors
-
学习Flask:一款用于web开发的框架