日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

rest post无法取到request_小白学Flask第五天 | 详解很重要的request对象

發布時間:2024/8/1 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 rest post无法取到request_小白学Flask第五天 | 详解很重要的request对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
點擊藍色字關注我們!

一個正在努力變強的公眾號

本文內容:

  • request的form_data_args用法

  • 上傳文件

  • request的form、data、args用法from flask import request

    就是 Flask 中表示當前請求的 request 對象,request對象中保存了一次HTTP請求的一切信息。

    這里給大家準備了一張表格:

    大家看完表格可能也沒什么感覺,到底怎么去使用它們呢?

    # -*- coding: utf-8 -*-from flask import Flask,requestapp = Flask(__name__)@app.route("/post", methods=["GET","POST"])def post(): name = request.form.get("name") age = request.form.get("age") return "hello name=%s age=%s" % (name, age)if __name__ == '__main__': app.run(debug=True)

    可以看到在post視圖函數當中的語句,意思就是獲取到表單數據當中的name和age的值。

    這里可能就會有些朋友不懂表單數據是什么了,其實學過html的基本上都會下面的這個標簽

    <form method="post"> <input name="name" type="text"> <input name="age" type="text"> <input type="submit"> form>

    上面就是一個表單,也就是需要我們去填寫的一個表格,然后把我們填寫的內容放入請求體中返回給服務器。

    為了給大家演示,我這里采用的是postman軟件,這是一款可以模擬多種請求方式的軟件,扔給大家一個鏈接:

    https://www.getpostman.com/downloads/

    我就用這款軟件來模擬post請求

    以表單的形式發送:

    可以看到我們成功的請求了數據,同時也成功的獲取到了表單當中的數據,如果我們不使用這款模擬軟件,我們也可以自行去寫form表單進行測試。

    這里我們思考一下,如果我們去打印request中的data數據會是什么返回結果?data是指請求體當中的數據,我們來測試看看:

    @app.route("/post", methods=["GET","POST"])def post(): name = request.form.get("name") age = request.form.get("age") print(request.data) return "hello name=%s age=%s" % (name, age)

    返回的結果:

    可以看到返回的結果是空的,這是為什么呢?我們明明post數據到request當中了。其實在這之前我們就已經將請求體當中的數據放到了form字典當中去了,也就是將 name=kuls&age=11 這類的數據轉化成類字典的形式了,所以data當中的數據已經不存在了

    那么我們再看一種情況

    我們如果按照JSON格式的數據發送過去,會是怎樣的情況

    可以看到這里返回的是空的,為什么?這個時候我們再去控制臺看下data當中有么有數據返回

    可以看到data當中是有數據的,這也就說明了,當我們從前端發送的數據如果是表單的數據就可以直接從form里面進行提取,如果不是表單數據那我們無法form中提取東西,我們只能從data當中去提取請求體當中的數據

    大家可能看到過底下這種地址:

    http://127.0.0.1:5000/post?city=hunan

    這種地址稱為查詢字符串,在request當中也有相關的屬性args

    @app.route("/post", methods=["GET","POST"])def?post(): city = request.args.get("city") print(request.data) return "hello city=%s" % (city)

    返回結果:

    args的整體思路和form差不多,所以這里不過多闡述

    上傳文件

    上傳文件主要用了request當中最后一個屬性files

    # -*- coding: utf-8 -*-from flask import Flask,requestapp = Flask(__name__)@app.route("/upload", methods=["GET","POST"])def upload(): f = request.files.get("pic") if f is None: # 沒有發送文件 return "未上傳文件" # 將文件保存在本地 # 1.創建一個文件 f1 = open("./demo.png", "wb") # 2.向文件寫內容 data = f.read() f1.write(data) f1.close() return "上傳成功"if __name__ == '__main__': app.run(debug=True)

    我們運行代碼,并且再次使用postman來進行模擬上傳文件。

    這里簡單教大家一下如何來上傳

    按照圖中操作

    填寫headers:

    Key:Content-Type

    Value:multipart/form-data

    最后在body當中上傳

    我們運行一下這次的案例

    可以看到我們成功上傳!

    其實在這里我們有一個更加簡單的寫法:

    # -*- coding: utf-8 -*-from flask import Flask,requestapp = Flask(__name__)@app.route("/upload", methods=["GET","POST"])def upload(): f = request.files.get("pic") if f is None: # 沒有發送文件 return "未上傳文件" # 直接使用上傳的文件對象保存 f.save("./demo1.jpg") return "上傳成功"if __name__ == '__main__': app.run(debug=True)

    直接通過上傳的文件對象進行保存即可,效果相同!


    Flask系列文章:

    小白學Flask第一天 | 我的第一個Flask程序

    小白學Flask第二天| app對象的初始化和配置

    小白學Flask第三天| 今天把視圖函數的路由給講清楚!

    小白學Flask第四天| 把路由轉換器玩的更牛逼

    持續更新中...

    與50位技術專家面對面20年技術見證,附贈技術全景圖

    總結

    以上是生活随笔為你收集整理的rest post无法取到request_小白学Flask第五天 | 详解很重要的request对象的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。