1. 請求request
服務端在接收到客戶端的請求後,會自動建立request物件,由flask框架建立,request物件不可修改
@blue.route('/request/',methods=['get','post','put'])
def get_request():
# 請求上下文 request,
# 獲取get請求傳遞的引數:request.args.get(key)/request.args.getlist(key)
# 獲取post、put、patch、delete請求傳遞的引數: request.form.get(key)/request.form.getlist(key)
# 判斷http請求方式: request.method
pass
屬性:
base_url:去掉get引數的url
host_url:只有主機和埠號的url
path:路由中的路徑
method:請求方法
args:get請求引數
form:post請求引數
files:檔案上傳
headers:請求頭
cookies:請求中的cookie
(1) args–>get請求引數包裝
a)args是get請求引數的包裝,args是乙個immutablemultidict物件,類字典結構物件
b)資料儲存也是key-value
(2) form–>post請求引數包裝
a)form是post請求引數的包裝,args是乙個immutablemultidict物件,類字典結構物件
b)資料儲存也是key-value
重點:immutablemultidict是類似字典的資料結構,但是與字典的區別是,可以存在相同的鍵。
在immutablemultidict中獲取資料的方式,dict[『key』]或者dict.get(『key』)或者dict.getlist(『key』)
2.響應(make_response命令)
response是由開發者自己建立的
建立方法:
from flask import make_response
make_response建立乙個響應,是乙個真正的response物件
狀態碼:
格式:make_reponse(data,code)
,其中data是返回的資料內容,code是狀態碼
a)直接將內容當做make_response的第乙個引數,第二個引數直接寫返回的狀態碼
b)直接在render後加返回的狀態碼
例子1:
定義乙個獲取get請求的request的方法,並將返回成功的請求的狀態碼修改為200
@blue.route('/getrequest/', methods=['get'])
def get_request():
print(request)
return '獲取request', 200
例子2:
返回response響應,並新增返回結果的狀態碼200
@blue.route('/getresponse/')
def get_response():
response = make_response('', 500)
return response
或者:
@blue.route('/getresponse/', methods=['get'])
def get_user_response():
login_html = render_template('login.html')
res = make_response(login_html, 200)
return res
3. 重定向/反向解析redirect 重定向操作,這個和django中類似
url_for('藍圖定義的名稱.方法名')
例子1:
定義跳轉方法,跳轉到get_response的方法上
@blue.route('/getredirect/')
def get_redirect():
return redirect('getresponse')
例子2:
使用url_for反向解析
from flask import redirect, url_for
@blue.route('/getredirect/')
def get_redirect():
return redirect(url_for('first.get_response'))
4. 終止/異常捕獲
自動丟擲異常:abort(狀態碼)
捕獲異常處理:errorhandler(狀態碼),定義的函式中要包含乙個引數,用於接收異常資訊
(1 )定義終止程式
@blue.route('/make_abort/')
def get_abort():
abort(400)
return '終止'
(2 )捕獲定義的異常@blue.errorhandler(400)
def handler(exception):
return '捕獲到異常資訊:%s' % exception
【例】
@blue.route('/index/',methods=['get'])
def index():
a = int(request.args.get('a'))
b = int(request.args.get('b'))
try:
a/bexcept exception as e:
print(e)
# 丟擲異常
abort(500)
return render_template('index.html')
@blue.errorhandler(500)
def erro500(exception):
return '捕捉異常,錯誤資訊為: %s' % exception
Flask 應用和請求上下文
from flask import request defindex user request.headers.get user agent return you browserid format user 標題flask應用上下文和請求上下文 變數名上下文說明 應用上下文 當前應用的應用例項 g應...
HTTP協議02 請求和響應的報文構成
http協議和tcp ip協議族內的其他眾多協議相同,用於客戶端與伺服器之間的通訊,請求訪問文字或影象等資源的一端 稱為客戶端,而提供資源響應的一端稱為服務端。應用http協議時,請求必定是客戶端發出,而服務端響應該請求並返回。請求報文的構成 1.請求方法 請求uri 協議版本 2.可選的請求首部字...
Flask 中請求鉤子的理解和應用?
請求鉤子是通過裝飾器的形式實現的,支援以下四種 1,before first request 在處理第乙個請求前執行 2,before request 在每次請求前執行 3,after request 如果沒有未處理的異常丟擲,在每次請求後執行 4,teardown request 即使有未處理的異...