Flask蓝图 概述:蓝图分为两种方式,按照功能划分,与按照结构划分。 1.小蓝图 说明:按照功能划分蓝图。 在视图函数中创建多个 py 文件,每个 py 文件中的视图函数都可以注册到蓝图
概述:蓝图分为两种方式,按照功能划分,与按照结构划分。
1.小蓝图说明:按照功能划分蓝图。
在视图函数中创建多个 py 文件,每个 py 文件中的视图函数都可以注册到蓝图中;
目录结构如图所示:
manage.py 为启动文件:
# -*- coding: utf-8 -*-
from pythonProject import create_app
app = create_app() # 调用文件创建 app
if __name__ == '__main__':
app.run()
pythonProject /__init__.py
文件是包的标志文件。通常说的导入一个包即为导入它的__init__.py
文件;因此我们只需要在__init__.py
中创建对应的 app 即可。
from flask import Flask
from .views.account import ac_blueprint
def create_app():
app = Flask(__name__)
app.register_blueprint(ac_blueprint,url_prefix = '/web')
# /web 相当于路由分发的前置
return app
在小蓝图内编写视图函数
# -*- coding: utf-8 -*-
from flask import Blueprint
ac_blueprint = Blueprint('ac',__name__)
# 将路由注册到蓝图内
@ac_blueprint.route('/f1')
def func():
return "f1"
2.大蓝图
说明:按照结构划分蓝图。
目录结构
补充:apps 有的时候也可能是与项目名称相同。
# -*- coding: utf-8 -*-
from apps import create_app
app = create_app()
if __name__ == '__main__':
app.run()# 启动文件
创建 app 函数,注册蓝图。
from flask import Flask
from .account import account
from .admin import admin
def create_app():
app = Flask(__name__)
app.config.from_object('config.settings') # 加载配置文件
app.register_blueprint(account)# 注册蓝图
app.register_blueprint(admin) # 注册蓝图
return app
在每个项目中创建蓝图
# -*- coding: utf-8 -*-
from flask import Blueprint
admin = Blueprint("ad",__name__)
# -*- coding: utf-8 -*-
from flask import Blueprint
account = Blueprint("ac",__name__,template_folder='templates')
# 创建蓝图,并指定相关的参数,更加具体的参数可以参考源码示例
from .views import user
# 注意需要写到蓝图对象下面,不然导入的时候蓝图对象不会被加载到内存
源码示例
蓝图中视图函数的写法
# -*- coding: utf-8 -*-
from flask import render_template
from .. import account # 导入蓝图,因此需要在蓝图被创建后将视图模块导入。
@account.route('/login')
def login():
return render_template('login.html')
相关 html 文件。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>内部登录</h1>
</body>
</html>
继续努力,终成大器。