给开发者提供清晰的目录结构。html
一、建立项目。git
二、在项目目录下建立与项目名同名文件夹。github
三、在 test_prj 文件夹下建立 __init__.py 文件,并在其中实例化 Flask 并返回。web
from flask import Flask def create_app(): app = Flask(__name__) return app
三、在项目目录下建立 manage.py 文件做为入口,导入 Flask 实例并使用flask
from test_prj import create_app app = create_app() if __name__ == '__main__': app.run()
四、在项目同名文件夹下建立 views 文件夹用来存放视图文件。app
五、在 views 文件夹下编写视图相关代码。好比新建一个用户逻辑相关视图,并引入蓝图。ide
# 引入蓝图 from flask import Blueprint # 实例化 usr = Blueprint('usr', __name__) # 编写视图函数 @usr.route('/login') def login(): return 'login' @usr.route('/logout') def logout(): return 'logout'
六、在 /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
七、接下来就能够正常运行访问了。测试
九、在 templates 目录下新建登陆模板,修改视图。url
<!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