日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Python?requests用法和django后臺處理詳解_python

作者:張志強 ? 更新時間: 2022-05-21 編程語言

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) # 保存到本地

總結

原文鏈接:https://zhiqiang.org/coding/requests-and-django.html

欄目分類
最近更新