Python requests用法和django后台处理详解


Posted in Python onMarch 19, 2022

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后台处理内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python 的内置字符串方法小结
Mar 15 Python
利用python如何处理百万条数据(适用java新手)
Jun 06 Python
通过selenium抓取某东的TT购买记录并分析趋势过程解析
Aug 15 Python
Python 中list ,set,dict的大规模查找效率对比详解
Oct 11 Python
通过实例了解python property属性
Nov 01 Python
Python求解正态分布置信区间教程
Nov 20 Python
Python调用graphviz绘制结构化图形网络示例
Nov 22 Python
python 画函数曲线示例
Dec 04 Python
python在不同条件下的输入与输出
Feb 13 Python
Django 拼接两个queryset 或是两个不可以相加的对象实例
Mar 28 Python
使用jupyter notebook直接打开.md格式的文件
Apr 10 Python
简述python&pytorch 随机种子的实现
Oct 07 Python
Python实现Hash算法
Mar 18 #Python
python实现会员信息管理系统(List)
Mar 18 #Python
Python实现归一化算法详情
Mar 18 #Python
python实现会员管理系统
Mar 18 #Python
Python内置数据类型中的集合详解
Python集合set()使用的方法详解
Mar 18 #Python
基于Python实现流星雨效果的绘制
You might like
PHP编实现程动态图像的创建代码
2008/09/28 PHP
linux环境apache多端口配置虚拟主机的方法深入介绍
2013/06/09 PHP
关于使用key/value数据库redis和TTSERVER的心得体会
2013/06/28 PHP
PHP中的随机性 你觉得自己幸运吗?
2016/01/22 PHP
利用PHP实现开心消消乐的算法示例
2017/10/12 PHP
[原创]提供复制本站内容时出现,该文章转自脚本之家等字样的js代码
2007/03/27 Javascript
JavaScript与函数式编程解释
2007/04/27 Javascript
jQuery 前的按键判断代码
2010/03/19 Javascript
Javascript数组的排序 sort()方法和reverse()方法
2012/06/04 Javascript
JS实现淘宝支付宝网站的控制台菜单效果
2015/09/28 Javascript
jQuery EasyUI Pagination实现分页的常用方法
2016/05/21 Javascript
checkbox批量选中,获取选中项的值的简单实例
2016/06/28 Javascript
如何写好你的JavaScript【推荐】
2017/03/02 Javascript
layui文件上传实现代码
2017/05/20 Javascript
node.js学习之事件模块Events的使用示例
2017/09/28 Javascript
使用 vue 实例更好的监听事件及vue实例的方法
2019/04/22 Javascript
vue-mugen-scroll组件实现pc端滚动刷新
2019/08/16 Javascript
JavaScript遍历数组的方法代码实例
2020/01/14 Javascript
webpack打包优化的几个方法总结
2020/02/10 Javascript
JS实现网站楼层导航效果代码实例
2020/06/16 Javascript
[57:16]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第二场
2014/05/26 DOTA
python Django连接MySQL数据库做增删改查
2013/11/07 Python
深入解析Python中的变量和赋值运算符
2015/10/12 Python
Python实现简单的用户交互方法详解
2018/09/25 Python
python按时间排序目录下的文件实现方法
2018/10/17 Python
基于HTML5 的人脸识别活体认证的实现方法
2016/06/22 HTML / CSS
Wilson体育用品官网:美国著名运动器材品牌
2019/05/12 全球购物
澳大利亚当地社区首选的光学商店:1001 Optical
2019/08/24 全球购物
简述DNS进行域名解析的过程
2013/12/02 面试题
职业教育毕业生求职信
2013/11/09 职场文书
学校领导班子对照检查材料
2014/08/28 职场文书
企业挂职心得体会
2014/09/10 职场文书
父亲节活动总结
2015/02/12 职场文书
放假通知怎么写
2015/08/18 职场文书
承诺书的签字人,需不需要承担相应的责任?
2019/07/09 职场文书
关于springboot配置druid数据源不生效问题(踩坑记)
2021/09/25 Java/Android