【Flask】request请求
在Flask中,可以定義路由默認的請求方式:
利用methods參數可以自己指定一個接口的請求方式
一、get請求
get方式:把請求參數放到為url的?后面,每個請求參數格式為:參數名=參數值。參數之間采用&符號隔開。采用的字符數據傳輸,所以也叫明文的請求
post: 表單提交,并且采用字節流的方式傳遞數據
案例:
模板中的html文件
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>測試請求方式和請求參數</title><style>.parent{text-align: center;}</style> </head> <body><div class="parent"><h2>請求方式</h2><a href="/test1?user_id=100&name=zhilong">get請求</a><h5>post請求</h5><form action="/test2" method="post" enctype="multipart/form-data">姓名:<input type="text" name="user_name"> <br>年領:<input type="text" name="user_age"> <br>上傳:<input type="file" name="image" ><br><input type="submit"></form></div></body> </html>注意
@app.route('/test1',methods=['GET']):表示只接收get請求
@app.route('/test2',methods=['POST']):表示接收post請求
@app.route('/test2',methods=['POST','GET']):表示接收get和post請求
如果想要獲取其他地方傳遞的參數,可以通過Flask提供的request對象來讀取。
例如:
前端html中的請求地址為:
href="/test1?user_id=100&name=zhilong"
后端獲取user_id和name的值為:
request.args.get('user_id')
request.args.get("name")
不同位置的參數都存放在request的不同屬性中
視圖函數:
from flask import Flask,request #static_url_path:相當于路由 app = Flask(__name__) #初始化Flask項目的服務@app.route('/') def hello_world():return 'Hello World!'@app.route('/test1',methods=['GET']) def test1():user_id=request.args.get('user_id')print('用戶id是:{}'.format(user_id))name=request.args.get("name")print('用戶名字是:{}'.format(name))return "請求成功"if __name__ == '__main__':#0.0.0.0:代表當前系統中的所有的ip地址 默認端口是5000,flask的debug模式:把錯誤信息顯示在頁面中app.run(host='0.0.0.0',port=8080,debug=True)訪問靜態資源:
http://192.168.112.217:8080/static/test1.html
點擊get請求,進入指定的頁面,后端視圖函數返回“請求成功”
二、post請求
后端想要獲取到表單中傳入的值用request方法下的form方法
例如:
request.form.get('user_name')
request.form.get('user_age')
特別注意:表單請求的url和后端視圖中的url要保持一致
后端視圖
訪問靜態頁面
表單中填寫數據,提交
后端視圖返回"post請求成功"
控制臺打印結果為:
三、文件上傳
客戶端上傳文件到服務器,并保存到服務器中
后端想要獲取上傳的參數:用request.files['image']
f.save('./static/demo.jpg'):表示后端獲取到客戶端上傳的文件后保存到/static/demo.jpg這里
視圖為:
注意:
文件上傳的,注意:需要在表單中添加屬性enctype="multiple/form-data"
把文件的字節變成連續不間斷的字節流,有統一的報頭和包流
總結
以上是生活随笔為你收集整理的【Flask】request请求的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Flask】路由和URL
- 下一篇: 【Flask】Jinja2模板之过滤器