請求request
服務端在接收到客戶端的請求后聚凹,會自動創(chuàng)建Request對象
由Flask框架創(chuàng)建,Request對象不可修改
屬性:
url:完整的請求地址
base_url:去掉GET參數(shù)的url
host_url:只有主機和端口號的url
path:路由中的路徑
method:請求方法
remote_addr:請求的客戶端的地址
args:GET請求參數(shù)
form:POST請求參數(shù)
files:文件上傳
headers:請求頭
cookies:請求中的cookie
args-->GET請求參數(shù)包裝
args是get請求參數(shù)的包裝抽诉,args是一個lmmutableMultiDict對象陨簇,類字典結構對象
數(shù)據(jù)存儲也是key-value
from-->POST請求參數(shù)包裝
form是post請求參數(shù)的包裝,args是一個lmmutableMultiDict對象迹淌,類字典結構對象
數(shù)據(jù)存儲也是key-value
重點:lmmutableMultiDict是類似字典的數(shù)據(jù)結構河绽,但是與字典的區(qū)別是,<font style="color:red; font-weight:bold;">可以存在相同的鍵</font>
在lmmutableMultiDict中獲取數(shù)據(jù)的方式唉窃,dict['key']或者dict.get('key')或者dict.getlist('key')
響應Respone
Response是由開發(fā)者自己創(chuàng)建的
創(chuàng)建方法:
from flask import make_response
make_response 創(chuàng)建一個響應葵姥, 是一個真正的Response對象
狀態(tài)碼:
格式:make_reponse(data, code), 其中data是返回的數(shù)據(jù)內(nèi)容,code是狀態(tài)碼
a. 直接將內(nèi)容當做make_response的第一個參數(shù)句携,第二個參數(shù)直接寫返回的狀態(tài)碼
b. 直接在render后加返回的狀態(tài)碼
例子1:
定義一個獲取GET請求的request的方法榔幸,并將返回成功的請求的狀態(tài)碼修改為200
@blue.router('/getrequest/', methods=['GET'])
def get_request():
print(request)
return '獲取request', 200
例子2:
返回response響應,并添加返回結果的狀態(tài)碼200
@blue.route('/getrespone/')
def get_response():
response = make_response('<h2>我是響應</h2>',500)
return response
或者:
@blue.router('/getresponse/', methods=['GET'])
def get_user_response():
login_html = render_template('login.html')
res = make_response(login_html, 200)
return res
重定向/反向解析
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'))
終止/異常捕獲
自動拋出異常:abort(狀態(tài)碼)
捕獲異常處理:errorhandler(狀態(tài)碼)削咆,定義的函數(shù)中要包含一個參數(shù),用戶接收異常信息
定義終止程序
@blue.route('/make_abort/')
def get_abort():
abort(400)
return '終止'
捕獲定義的異常
@blue.errorhandler(400)
def handler(exception):
return '捕獲到異常信息:%s' % exception