概述
Blueprint 是一个存储视图方法的容器,这些操作在这个Blueprint 被注册到一个应用之后就可以被调用,Flask 可以通过Blueprint来组织URL以及处理请求,Flask使用Blueprint让应用实现模块化。
代码编写
在项目app目录下创建一个web包用于存放所有的web页面代码,web即为项目的一个模块,下面的页面通过web蓝图来进行管理
蓝图初始化
在web包的初始化文件__init__.py下初始化蓝图配置
__author__ = 'fanxl12'
from flask import Blueprint
# 实例化蓝图
web = Blueprint('web', __name__)
car页面使用web蓝图
在web包下面创建业务文件car.py
__author__ = 'fanxl12'
from . import web
@web.route('/')
def index():
return 'hello, world'
这里面我们导入蓝图web,然后添加路由访问
注册car模块
在web包__init__.py下面引入car完成注册
最终代码如下:
__author__ = 'fanxl12'
from flask import Blueprint
# 实例化蓝图
web = Blueprint('web', __name__)
# 实现模块下多接口的注册
from app.web import car
将蓝图注册到app上
在app初始化的地方,注册蓝图,代码如下:
__author__ = 'fanxl12'
from flask import Flask
def create_app():
app = Flask(__name__)
# 从模块里面加载配置文件
app.config.from_object('app.secure')
app.config.from_object('app.setting')
register_blueprint(app)
return app
def register_blueprint(app):
"""
注册蓝图
:param app:
:return:
"""
from app.web import web
app.register_blueprint(web)
静态文件访问
在web同级目录创建static目录,这个即为蓝图默认的静态文件访问目录,文件可以通过地址访问,这里放入11.jpg文件
模板配置
在web同级目录创建templates目录,这个即为web蓝图的模板目录,里面创建了test.html模板,代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>测试页面</title>
</head>
<body>
<h1>您好, {{username}}</h1>
<img src="{{ url_for('static', filename='11.jpg') }}" style="width: 1000px">
</body>
</html>
这里接收后端传入数据username,并且访问static目录下的11.jpg
修改car.py的index视图函数,访问test.html
__author__ = 'fanxl12'
from flask import render_template
from . import web
@web.route('/')
def index():
return render_template('test.html', username='王五')
通过render_template即可访问我们定义的模板,并传入参数username