首頁 > 軟體

Python requests用法和django後臺處理詳解

2022-03-19 13:02:03

1、requests 的常見用法

requests 除了 url 之外,還有 params, data 和 files 三個引數,用於和伺服器後臺互動。

1.1、提交查詢

注意 get 只支援 params ,不支援 data 和 files。

requests.get(login_url, params={
    "user": user, 
    "password": password, 
})

1.2、提交表格

注意,requests.post既支援data,也支援params:

requests.post(form_submit_url, data={
    "user": user, 
    "password": password, 
},  params={
    "pool": pool, 
})

1.3、在提交時附加檔案:

files = ["a.csv", "b.xml"]

# 注意file需要以binary形式開啟。
files = [("files", (os.path.basename(file), open(file, "rb")))
         for file in files]

r = requests.post(url, files=files, data=data, params=params)

1.4、保持狀態

使用 session 保持狀態,先登入,再提交表格:

session = requests.Session()
session.get(login_url, params)
session.post(form_submit_url, data)

1.5、檢視結果

最重要的是status_code、reason和content三個成員變數:

r = requests.post(url, files=files, data=data, params=params)

if r.status_code != 200:
    print(r.status_code, r.reason) # 列印出錯資訊。
else:
    print(r.content)  # 伺服器返回結果

2、django 的處理

2.1、params 傳入的引數

對於 requests 通過 params 傳入的引數,可以通過request.GET獲取:

def handler(request):
    return request.GET["pool"]       # 若未傳入引數,將丟擲異常
    # return request.GET.get("pool") # 當沒有傳入該引數時,返回None
    # return request.GET.get("pool", "abc") # 預設為abc    

2.2、data 傳入的引數

對於 requests 通過 data 傳入的引數,可以通過request.POST獲取:

def handler(request):
    return request.POST["user"]       # 若未傳入引數,將丟擲異常
    # return request.POST.get("user") # 當沒有傳入該引數時,返回None
    # return request.POST.get("user", "abc") # 預設為abc   

2.3、files 傳入的引數

對於 requests 通過 files 傳入的引數,可以通過request.FILES獲取:

def handler(request):
    for file in request.FILES.getlist("files"):
        name = file.name
        content = file.file.read()      # is binary
        open(name, "wb").write(content) # 儲存到本地

總結

到此這篇關於Python requests用法和django後臺處理的文章就介紹到這了,更多相關requests用法和django後臺處理內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com