Python requests 库常用方法与 Django 后端接收处理详解
本文详细介绍 Python requests 库中 params、data 和 files 参数的使用方法,涵盖 GET 查询、表单提交及文件上传。同时解析 Django 后端如何通过 request.GET、request.POST 和 request.FILES 接收对应数据,并对比直接取值与 get 方法的异常处理差异。
1、requests 的常见用法
在使用 requests 库时,除了指定目标 url 外,还可以利用 params、data 和 files 三个参数与服务器后台进行数据交互。
1.1、提交查询
需要注意的是,GET 请求仅支持使用 params 参数传递数据,不支持 data 和 files 参数。
requests.get(login_url, params={
"user": user,
"password": password,
})
1.2、提交表格
对于 POST 请求,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 传递参数时,Django 后端可以通过 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 传递参数时,Django 后端可以通过 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 传递文件时,Django 后端可以通过 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后台处理内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













