flask中蓝图

蓝图

在Flask中,使用蓝图Blueprint来分模块组织管理。

蓝图实际可以理解为是一个存储一组视图方法的容器对象,其具有如下特点:

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

使用方式

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

 

1. 创建一个蓝图对象

user_bp=Blueprint('user',__name__)
  • 第一个参数为蓝图名称
  • 第二个参数指定蓝图的目录:这个模块所在目录

 

2. 在这个蓝图对象上进行操作,注册路由,指定静态文件夹,注册模版过滤器

 @user_bp.route('/')
 def user_profile():
     return 'user_profile'

 

3. 在应用对象上注册这个蓝图对象

 app.register_blueprint(user_bp)

在目录定义蓝图

1. 创建蓝图所在的包

 

  • init文件在包加载时候执行

 2. 通常在包的init文件中定义蓝图

from flask import Blueprint


goods_dp = Blueprint("goods", __name__)

 

3. 定义蓝图中路由,视图

创建视图文件:

 

 定义视图:

from . import goods_dp


@goods_dp.route("/goods")
def get_goods():
    return "get goods"

 

在init中加载视图:

from flask import Blueprint


goods_dp = Blueprint("goods", __name__)

from . import views

 注意:这里最后一行加载视图模块,不能少,否则访问不到

4. 注册蓝图:

from flask import Flask, Blueprint
from goods import goods_dp


app = Flask(__name__, static_url_path="/s", static_folder="static_f")

# 注册蓝图
app.register_blueprint(goods_dp)

if __name__ == '__main__':
    app.run()

5. 访问蓝图中定义的视图:

 

 蓝图中定义路由前缀、静态文件、静态路径、模板

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

1. 蓝图内部静态目录,静态路径

面的示例将蓝图所在目录下的static_admin目录设置为静态目录

admin = Blueprint("admin",__name__,static_folder='static_admin')

现在就可以使用/admin/static_admin/<filename>访问static_admin目录下的静态文件了。

也可通过static_url_path改变访问路径

admin = Blueprint("admin",__name__,static_folder='static_admin',static_url_path='/lib')

2 蓝图内部模板目录

蓝图对象默认的模板目录为系统的模版目录,可以在创建蓝图对象时使用 template_folder 关键字参数设置模板目录

admin = Blueprint('admin',__name__,template_folder='my_templates')

 

 

 

posted @ 2021-03-13 16:10  foreast  阅读(114)  评论(0编辑  收藏  举报