欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

【Flask】创建一个蓝图

发布时间:2025/3/21 编程问答 33 豆豆
生活随笔 收集整理的这篇文章主要介绍了 【Flask】创建一个蓝图 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

蓝图

在一个Flask 应用项目中,如果业务视图过多,可否将以某种方式划分出的业务单元单独维护,将每个单元用到的视图、静态文件、模板文件等独立分开

例如从业务角度上,可将整个应用划分为用户模块单元、商品模块单元、订单模块单元,如何分别开发这些不同单元,并最终整合到一个项目应用中?

一、蓝图介绍

在Flask中,使用蓝图Blueprint来分模块组织管理。
蓝图实际可以理解为是一个存储一组视图方法的容器对象,其具有如下特点:

  • 一个应用可以具有多个Blueprint
  • 可以将一个Blueprint注册到任何一个未使用的URL下比如 “/user”、“/goods”
  • Blueprint可以单独具有自己的模板、静态文件或者其它的通用操作方法,它并不是必须要实现应用的视图和函数的
  • 在一个应用初始化时,就应该要注册需要使用的Blueprint

二、使用步骤

1、单个文件的蓝图

使用蓝图可以分为三个步骤

  • 创建一个蓝图对象
  • login_bp=Blueprint('register',__name__)
  • 在这个蓝图对象上进行操作,注册路由,指定静态文件夹,注册模版过滤器
  • @login_bp.route('/') def login():return render_template('static/guojia.jpg')
  • 在应用对象上注册这个蓝图对象
    特别注意1:在应用中注册蓝图时使用url_prefix参数指定
  • app.register_blueprint(login_bp,url_prefix='/register')

    2、独立模块的蓝图(用的最多)

    特别注意2:创建蓝图的代码,放到__init__文件中

    创建蓝图代码块(__init__文件)

    特别注意3:第六行代码一定要写from register.register import register

    为什么呢?

    执行项目python app.py,先执行app.py文件中第13行注册蓝图,遇到名称为register_bp的蓝图,随后代码去__init__文件中找到该蓝图第4行,但是操作蓝图的视图加载不出来,所以程序会报错。所以要在__init__文件中,创建完蓝图之后,导入蓝图视图模块

    from flask import Flask,Blueprint#创建蓝图,对应的register目录 register_bp=Blueprint('register',__name__)from register.register import register

    操作蓝图代码块(register.py)

    from flask import Flask,Blueprint from register import register_bp#蓝图上操作,注册路由 @register_bp.route('/') def register():return "注册页面"

    注册蓝图代码块(app.py)

    from flask import Flask from users import * from order.order_func import * from login import login_bp from register import register_bp app = Flask(__name__)#注册蓝图 app.register_blueprint(user_bp,url_prefix='/users')#在应用对象上注册蓝图 app.register_blueprint(register_bp,url_prefix='/register')@app.route('/') def hello_world():return 'Hello World!'if __name__ == '__main__':app.run(debug=True)

    3、蓝图中的静态资源和模板

    和应用对象不同,蓝图对象创建时不会默认注册静态目录的路由。需要我们在 创建时指定 static_folder 参数。
    例如

    register_bp=Blueprint('register',__name__,static_folder='static',template_folder='templates')

    案例:

    创建蓝图代码块

    from flask import Flask,Blueprint#创建蓝图,对应的register目录 register_bp=Blueprint('register',__name__,static_folder='static',template_folder='templates')from register.register import register

    定义蓝图视图代码块

    from flask import Flask,Blueprint from register import register_bp#蓝图上操作,注册路由 @register_bp.route('/') def register():return "注册页面"

    注册蓝图代码块

    from flask import Flask from users import * from order.order_func import * from login import login_bp #from register.register import register_bp from register import register_bpapp = Flask(__name__)#在应用对象上注册蓝图 app.register_blueprint(login_bp,url_prefix='/login')#在应用对象上注册蓝图 app.register_blueprint(register_bp,url_prefix='/register')@app.route('/') def hello_world():return 'Hello World!'if __name__ == '__main__':app.run(debug=True)

    启动项目,访问静态文件

    附目录结构

    总结

    以上是生活随笔为你收集整理的【Flask】创建一个蓝图的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。