

requests 用法和 django 后台处理
source link: https://zhiqiang.org/coding/requests-and-django.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

requests 用法和 django 后台处理
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) # 保存到本地
Q. E. D.

Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK