python框架之Flask(3)-Blueprint(蓝图)
蓝图
用途
给开发者提供清晰的目录结构。
使用
-
目录结构
1、创建项目。
2、在项目目录下创建与项目名同名文件夹。
3、在 test_prj 文件夹下创建 __init__.py 文件,并在其中实例化 Flask 并返回。
from flask import Flask def create_app(): app = Flask(__name__) return app
3、在项目目录下创建 manage.py 文件作为入口,导入 Flask 实例并使用
from test_prj import create_app app = create_app() if __name__ == '__main__': app.run()
4、在项目同名文件夹下创建 views 文件夹用来存放视图文件。
-
引入蓝图
5、在 views 文件夹下编写视图相关代码。比如新建一个用户逻辑相关视图,并引入蓝图。
# 引入蓝图 from flask import Blueprint # 实例化 usr = Blueprint('usr', __name__) # 编写视图函数 @usr.route('/login') def login(): return 'login' @usr.route('/logout') def logout(): return 'logout'
6、在 /test_prj/__init__.py 中给 Flask 实例注册蓝图。
from flask import Flask from .views.user import usr def create_app(): app = Flask(__name__) app.register_blueprint(usr) return app
7、接下来就可以正常运行访问了。
-
模板使用
8、在项目同名文件夹下创建 templates 目录。9、在 templates 目录下新建登录模板,修改视图。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>login</title> </head> <body> <h2>登录</h2> </body> </html>
# 引入蓝图 from flask import Blueprint,render_template # 实例化 usr = Blueprint('usr', __name__) # 编写视图函数 @usr.route('/login') def login(): return render_template('login.html') @usr.route('/logout') def logout(): return 'logout'
补充
前缀
可以在注册蓝图时通过 url_prefix 属性加上访问该蓝图时的前缀。
app.register_blueprint(admin, url_prefix='/admin')
蓝图装饰器
可以让装饰器只对指定蓝图生效,例如:
from flask import Blueprint, render_template usr = Blueprint('usr', __name__) @usr.before_request def before_request_func(): print('from before_request_func')
指定静态&模板目录
from flask import Blueprint web = Blueprint( 'web', __name__, template_folder='templates', static_folder='static' )
我测试时好像只对下面的大蓝图适用。
大蓝图
这里说的大蓝图就是对目录结构再更细粒度的划分了,附上示例地址。
https://github.com/zze326/flask_blueprint_pro.git
Java博客目录 | Python博客目录 | C#博客目录