flask框架中蓝图的使用

1.模块化

随着flask程序越来越复杂,我们需要对程序进行模块化的处理。flask内置了一个模块化处理的类,即Blueprint

2.Blueprint概念

简单来说,Blueprint 是一个存储操作方法的容器,这些操作在这个Blueprint 被注册到一个应用之后就可以被调用,Flask 可以通过Blueprint来组织URL以及处理请求。

Flask使用Blueprint让应用实现模块化,在Flask中,Blueprint具有如下属性:

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

3.初识蓝图

蓝图/Blueprint对象用起来和一个应用/Flask对象差不多,最大的区别在于一个 蓝图对象没有办法独立运行,必须将它注册到一个应用对象上才能生效

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

3.1 创建一个蓝图对象

admin=Blueprint('admin',__name__)

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

@admin.route('/admin')
def admin():
    return 'admin_home'

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

app.register_blueprint(admin,url_prefix='/admin')

当这个应用启动后,通过127.0.0.1:5000/admin/可以访问到蓝图中定义的视图函数

4.示例:

例如新增网站后台管理模块:

  • 1 新创建一个python package——admin
  • 2.admin模块里含有一个__init__.py文件,再新建一个views.py用来编写视图函数。在__init__.py中新建蓝图并从当前目录引入views进行关联。
# 导入蓝图模块
from flask import Blueprint

# 创建蓝图对象
admin_blu = Blueprint("admin", __name__)

# 引入关联的视图模块
from . import views
  • 3 在views里面编写具体视图函数
# 使用蓝图名.route装饰视图函数
@admin_blu.route('/login', methods=["GET", "POST"])
def login():
	# 用户登录具体视图
	return "login success!"

-4 在创建app应用时,注册蓝图。其中url_prefix为添加前缀的参数

# 导入蓝图
from info.modules.admin import admin_blu
	# 注册蓝图
    app.register_blueprint(admin_blu, url_prefix="/admin")

猜你喜欢

转载自blog.csdn.net/qq_38923792/article/details/91871019