Flask-蓝图(blueprint)
1 没有蓝图之前前,都是单文件
2 有了蓝图可以分文件,分app,之前的请求扩展还是一样用,只是在当前蓝图对象管理下的有效
3 蓝图使用
#第一步在app中注册蓝图,括号里是一个蓝图对象 app.register_blueprint(user.us) # 第二步,在不同文件中注册路由时,直接使用蓝图对象注册,不用使用app了,避免了循环导入的问题 @account.route('/login.html', methods=['GET', "POST"])
使用示例:
目录
pro_flask/app.py

from pro_flask import create_app app = create_app() if __name__ == '__main__': app.run()
pro_flask/pro_flask/__init__.py

from flask import Flask def create_app(): app = Flask(__name__) app.secret_key = 'aksdsjfdkjfskdjfk' @app.route('/index') def index(): return 'index' # 导入蓝图对象 from .views.account import xaccount from .views.user import xus # 在app中注册蓝图,括号里是一个蓝图对象 app.register_blueprint(xaccount) app.register_blueprint(xus) # 如果访问的资源不是/index,则去xus和xaccount这俩蓝图里找,例如:http://127.0.0.1:5000/f1 """ # 在app中注册蓝图时,还可以带上url_prefix参数,相当于django的路由分发,则访问蓝图资源时必须带上对应前缀 app.register_blueprint(xaccount, url_prefix='/web') app.register_blueprint(xus, url_prefix='/admin') 访问示例: http://127.0.0.1:5000/admin/f1 """ return app
pro_flask/pro_flask/views/account.py

from flask import Blueprint xaccount = Blueprint('xaccount', __name__) # 第一个参数是起的名字 @xaccount.route('/xaccf1') def f1(): return 'xaccf1' @xaccount.route('/xaccf1') def f2(): return 'xaccf2'
pro_flask/pro_flask/views/user.py

from flask import Blueprint xus = Blueprint('xus', __name__) # 第一个参数是起的名字 @xus.route('/f1') def f1(): return 'f1' @xus.route('/f2') def f2(): return 'f2'
备注:
上述account和user蓝图中在初始时可以定制使用自己的静态文件和模板文件目录
xaccount = Blueprint('xaccount', __name__, ) ########### def __init__( self, name: str, import_name: str, static_folder: t.Optional[t.Union[str, os.PathLike]] = None, static_url_path: t.Optional[str] = None, template_folder: t.Optional[str] = None, url_prefix: t.Optional[str] = None, subdomain: t.Optional[str] = None, url_defaults: t.Optional[dict] = None, root_path: t.Optional[str] = None, cli_group: t.Optional[str] = _sentinel, # type: ignore ): super().__init__( import_name=import_name, static_folder=static_folder, static_url_path=static_url_path, template_folder=template_folder, root_path=root_path, )
4 中小型项目目录划分
项目名字 -pro_flask文件夹 -__init__.py -templates -login.html -statics -code.png -views -blog.py -account.py -user.py -run.py
5 大型项目
项目名 -pro_flask文件夹 -__init__.py -web -__init__.py -static -views.py -templates -admin -templates -static -views.py -__init__.py -run.py
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!