給開發者提供清晰的目錄結構。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