藍圖
一 請求勾子
1 before_first_request
- 在處理第一個請求前執行
2 before_request
- 在每次請求前執行
- 如果在某裝飾的函式中回傳了一個回應,視圖函式將不再被呼叫
3 after_request
- 如果沒有拋出錯誤,在每次請求后執行
- 接受一個引數:視圖函式做出的回應
- 在此函式中可以對回應值在回傳之前做最后一步修改處理
- 需要將引數中的回應在此引數中進行回傳
4 teardown_request
- 在每次請求后執行
- 接受一個引數:錯誤資訊,如果有相關錯誤拋出
請求勾子代碼測驗
app = Flask(__name__)
# 在第一次請求前呼叫,可以在此方法內部做一些初始化操作
@app.before_first_request
def before_first_request():
print("before_first_request")
# 在每一次請求之前呼叫,這時候已經有請求了,可以在這個方法里面做請求的校驗
@app.before_request
def before_request():
print("before_request")
# 在執行完視圖函式之后會呼叫,并且會吧視圖函式所生成的回應傳入,可以在此方法中對回應最最后一步統一的處理
@app.after_request
def after_request(response):
print("after_request")
reponse.headers["Content-Type"] = "application/json"
return response
# 在每一次請求之后都會呼叫,會接收一個引數,引數是服務器出現的錯誤資訊
@app.teardown_request
def teardown_request(e):
print("teardown_request")
@app.route('/')
def index():
return 'index'
if __name__ == '__main__':
app.run(debug=Ture)
二 狀態保持
1 Cookie
(1) 設定cookie
from flask import Flask, make_response
@app.route('/cookie')
def set_cookie():
resp = make_response('set cookie')
# 名稱 內容 過期時間
resp.set_cookie('username', 'chenjunming', max_age=3600)
return resp
(2) 獲取cookie
from flask import Flask, request
@app.route('/request')
def resp_cookie():
resp = request.cookies.get('username')
return resp
2 Session
session資料的獲取
app.secret_key = 'chenjunming' # 設定secret_key
@app.route('/index1')
def index1():
session['username'] = 'chen'
return redirect(url_for('index')) # 重定向到index
@app.route('/')
def index():
return session.get('username')
三 藍圖
1 創建一個藍圖物件(最好放在一個單獨的包里)
admin = Blueprint('admin', __name__)
2 在這個藍圖物件上進行操作(注冊路由,指定靜態檔案夾,注冊模版過濾器)(最好放在單獨的包里)
@admin.route('/')
def admin_home():
return 'admin_home'
3 在應用物件上注冊這個藍圖物件
app.register_blueprint(admin, url_prefix='/admin')
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/149798.html
標籤:Python
上一篇:python演算法的工具選擇
下一篇:python迭代器
