Flask 蓝图(分文件)
Flask 蓝图(分文件)
Flask蓝图的作用是为了项目目录更清晰,也可以防止循环导入
一.使用蓝图之中小型系统
项目目录结构
-flask_pro -flask_test -__init__.py -static -templates -views -order.py -user.py -run.py
__init_.py
from flask import Flask app = Flask(__name__) from .views import user from .views import order app.register_blueprint(user.us) #注册蓝图app.register_blueprint(蓝图的对象) app.register_blueprint(order.us)
run.py
from flask_pro.flask_test import app if __name__ == '__main__': app.run()
user.py
from flask import Blueprint us = Blueprint("user",__name__) #蓝图的对象的名称=Blueprint('自定义蓝图名称',__name__) @us.route("/user") def user(): return "user"
order.py
from flask import Blueprint us = Blueprint("order",__name__) #蓝图的对象的名称=Blueprint('自定义蓝图名称',__name__) @us.route("/order") def order(): return "order"
二.使用蓝图之大型系统
项目目录结构
│ run.py │ └─pro_flask # 文件夹 │ __init__.py │ ├─admin # 文件夹 │ │ views.py │ │ __init__.py │ │ │ ├─static # 文件夹 │ └─templates # 文件夹 │ └─web # 文件夹 │ views.py │ __init__.py │ ├─static # 文件夹 └─templates # 文件夹
run.py启动app
from pro_flask import app if __name__ == '__main__': app.run()
__init__.py 实例化核心类,导入蓝图对象,注册蓝图
from flask import Flask from .admin import admin from .web import web app = Flask(__name__) app.register_blueprint(admin, url_prefix='/admin') # 起分路由的作用,前缀加/admin app.register_blueprint(web)
admin.views.py 完成路由注册以及视图函数
from . import admin @admin.route('/index') def index(): return 'Admin.Index'
admin.init.py 生成蓝图对象导入views,使得views的代码运行完成路由注册
from flask import Blueprint admin = Blueprint( 'admin', __name__, template_folder='templates', static_folder='static' ) from . import views
web文件夹下和admin文件夹下目录构成完全一致,此处不再举例