Flask——中介軟體,藍圖
阿新 • • 發佈:2020-08-27
中介軟體(跟django中介軟體完全不一樣)
from flask import Flask app = Flask(__name__) @app.route('/') def index(): return 'Hello World!' # 模擬中介軟體 class Md(object): def __init__(self,old_wsgi_app): self.old_wsgi_app = old_wsgi_app def __call__(self, environ, start_response): print('開始之前') ret = self.old_wsgi_app(environ, start_response) print('結束之後') return ret if __name__ == '__main__': #1我們發現當執行app.run方法的時候,最終執行run_simple,最後執行app(),也就是在執行app.__call__方法 #2 在__call__裡面,執行的是self.wsgi_app().那我們希望在執行他本身的wsgi之前做點事情。 #3 所以我們先用Md類中__init__,儲存之前的wsgi,然後我們用將app.wsgi轉化成Md的物件。 #4 那執行新的的app.wsgi_app,就是執行Md的__call__方法。 #把原來的wsgi_app替換為自定義的, app.wsgi_app = Md(app.wsgi_app) app.run()
藍圖(blueprint)
1 沒有藍圖之前前,都是單檔案 2 有了藍圖可以分檔案,分app,之前的請求擴充套件還是一樣用,只是在當前藍圖物件管理下的有效 3 藍圖使用 #第一步在app中註冊藍圖,括號裡是一個藍圖物件 app.register_blueprint(user.us) # 第二步,在不同檔案中註冊路由時,直接使用藍圖物件註冊,不用使用app了,避免了迴圈匯入的問題 @account.route('/login.html', methods=['GET', "POST"]) 4 中小型專案目錄劃分 專案名字 -pro_flask資料夾 -__init__.py -templates -login.html -statics -code.png -views -blog.py -account.py -user.py -run.py 5 大型專案 專案名 -pro_flask資料夾 -__init__.py -web -__init__.py -static -views.py -templates -admin -templates -static -views.py -__init__.py -run.py