flask學習2

weixin_50176212發表於2020-10-20

8.請求鉤子

8.1 before_first_request

#再在第一次請求之前呼叫,可以做初始化操作
@app.before_first_request
def before_first_request():
    print('--------->before_first_request')

8.2 before_request

@app.before_request
def before_request():
    print('--------->before_request')
    
#在每一次請求之前呼叫,請求已經到來,可以再這個方法中做請求校驗
#如果請求校驗不通過,直接在當前方法中進行響應,直接return之後,不需要再進行檢視函式的處理

8.3 after_request

@app.after_request
def after_request(response):
    print('---------->after_request')
    response.headers['Content-Tpye']='application/json'
    return response

沒有異常的情況下,在執行完檢視函式之後呼叫,會將檢視函式所生成的響應傳入,做相關的比如json新增頭資訊

8.4 teardown_request

@app.teardown_request
def tear_down(e):
    print('---------->teardown')
    
即使有異常,在每次請求後執行,接收的引數為異常資訊

9.請求上下文引數

from flask import Flask,request
屬性說明型別
data記錄請求的資料,並轉換為字串*
form記錄請求中的表單資料MultiDict
args記錄請求中的查詢引數MultiDict
cookies記錄請求中的cookie資訊Dict
headers記錄請求中的報文頭EnvironHeaders
method記錄請求使用的HTTP方法GET/POST
url記錄請求的URL地址string
files記錄請求上傳的檔案*
query_string記錄請求中的查詢引數bytes

注意:

query_string 獲取的引數是bytes型別,如果需要取出資料,需要進行下一步處理

args 獲取的引數是類字典型別,直接用get獲取

10.狀態保持

10.1 cookie

from flask import Flask,make_response,request

10.1.1 設定cookie

@app.route('/index')
def index():
    response = make_response('index')
    response.set_cookie('username','xx',max_age=3600)
    return  response
max_age 為最大存在時間

10.1.2 查詢cookie

@app.route('/cookies')
def get_cookie():
    return request.cookies.get('username','None')

10.1.3 刪除cookie

@app.route('/deleting')
def del_cookie():
    response = make_response('delete cookie')
    response.delete_cookie('username')
    return response

10.2 session

from flask import Flask,make_response,session

10.2.1 設定金鑰

class Config(object):
    SECRET_KEY='kasjbd'
app.config.from_object(Config)

10.2.2 設定session

@app.route('/index')
def index():
    session['username']='xxxx'
    response = make_response('index')
    return  response

10.2.3 檢視session

@app.route('/session')
def get_session():
    return session.get('username')

11.應用上下文

from flask import Flask,current_app,g,make_response

app=Flask(__name__)

@app.route('/index')
def index():
    print(current_app)
    print(current_app.name)
    print(current_app.config)
    current_app.test = '這是測試資料'
    response = make_response('index')
    return  response

@app.route('/index123')
def index123():
    print('這是通過current_app傳遞的資料',current_app.test)
    response = make_response('index')
    return response
    
if __name__ == '__main__':
    app.run(debug=True)
    
#請求上下文request session:儲存這客戶端與伺服器之問互動的資料
#應用上下文 current _app g flask程式在執行的過程中﹐儲存的一些配置資訊﹐程式名﹐資料庫連結等

12.在命令列中啟動flask

from flask import Flask
from flask_script import Manager

app=Flask(__name__)

manage =Manager(app)

if __name__ == '__main__':
    manage.run()

相關文章