flask之request
阿新 • • 發佈:2020-07-21
flask的request
每個框架中都有處理請求的機制(request),但是每個框架的處理方式和機制是不同的,看看程式碼中怎麼用...
from flask import Flask from flask import request from flask import render_template app = Flask(__name__) @app.route('/') def aa(): return render_template('formss.html') @app.route('/rep', methods=['POST']) # 表示只允許post請求,是個列表就意味著可以允許多種請求方式 def rep(): print(request.values) # 可以同時獲取ulr和form的引數 CombinedMultiDict([ImmutableMultiDict([('id', '1'), ('age', '12')]), # ImmutableMultiDict([('user', '小明'), ('pwd', '123')])]) print(request.values.get('id')) print(request.values['user']) print(request.values.to_dict()) # 直接將url和form的內容轉換成字典 print(request.method) # 用來驗證請求方式 print(request.form) # 類似字典的東西 ImmutableMultiDict([('user', '小明'), ('pwd', '123')]) print(request.form['user']) # 字典取值 小明 print(request.form['pwd']) # 字典取值 123 print(list(request.form.keys())) # 拿出所有的value值 return 'OK' @app.route('/gg', methods=['GET', 'POST']) def gg(): print(request.args) # 獲取url中的引數 也是一個類似字典 ImmutableMultiDict([('id', '1'), ('age', '18')]) # request.args與request.form 的區別是 一個是獲取url的引數值 一個是是獲取表單的內容 都是一個類似的字典 dic = dict(request.args) print(dic) # {'id': '1', 'age': '18'} print(request.headers) ''' Host: 127.0.0.1:5000 Connection: keep-alive Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9 ''' print(request.data) # request.data 之 如果處理不了的就變成字串兒存在data裡面 ''' b'' ''' return 'ok' # request 是基於 mimetype 進行處理的mimetype的型別 以及 字串兒 : http://www.w3school.com.cn/media/media_mimeref.asp # # 如果不屬於上述型別的描述,request就會將無法處理的引數轉為Json存入到 data 中 # # 其實我們可以將 request.data , json.loads 同樣可以拿到裡面的引數 # 注意這裡的坑來啦! 坑來啦! # 如果url和form中的Key重名的話,form中的同名的key中value會被url中的value覆蓋 # request.cookies 是將儲存在瀏覽器中的cookie讀取出來 @app.route('/a') def file(): return render_template('forms1.html') @app.route('/file',methods=['POST']) def form1(): print(request.files) print(request.files['file']) my_file = request.files['file'] my_file.save('douzi.txt') return 'OK' @app.route('/path') def path_(): print(request.path) #獲取當前的url路徑 /path print(request.script_root) #獲取當前url的上一級路徑 print(request.url) #獲取當前的url的全部路徑 print(request.url_root) #獲取當前的url上一級的全部路徑 return 'ok' # request.json 之 前提你得告訴是json # 如果在請求中寫入了 "application/json" 使用 request.json 則返回json解析資料, 否則返回 None if __name__ == '__main__': app.run('127.0.0.1', 5000, debug=True)