Python requests.post方法中data与json参数区别详解


Posted in Python onApril 30, 2020

在通过requests.post()进行POST请求时,传入报文的参数有两个,一个是data,一个是json。

data与json既可以是str类型,也可以是dict类型。

区别:

1、不管json是str还是dict,如果不指定headers中的content-type,默认为application/json

2、data为dict时,如果不指定content-type,默认为application/x-www-form-urlencoded,相当于普通form表单提交的形式

3、data为str时,如果不指定content-type,默认为text/plain

4、json为dict时,如果不指定content-type,默认为application/json

5、json为str时,如果不指定content-type,默认为application/json

6、用data参数提交数据时,request.body的内容则为a=1&b=2的这种形式,用json参数提交数据时,request.body的内容则为'{"a": 1, "b": 2}'的这种形式

示例

Django项目pro_1如下:

urls.py:

from django.conf.urls import url
from django.contrib import admin
from app01 import views

urlpatterns = [
 url(r'^admin/', admin.site.urls),
 url(r'^index/', views.index),
]

views.py :

from django.shortcuts import render, HttpResponse

def index(request):
 print(request.body)
 """
 当post请求的请求体以data为参数,发送过来的数据格式为:b'username=amy&password=123'
 当post请求的请求体以json为参数,发送过来的数据格式为:b'{"username": "amy", "password": "123"}'
 """
 print(request.headers)
 """
 当post请求的请求体以data为参数,Content-Type为:application/x-www-form-urlencoded
 当post请求的请求体以json为参数,Content-Type为:application/json
 """
 return HttpResponse("ok")

在另一个Python程序中向http://127.0.0.1:8080/index/发送post请求,打印request.body观察data参数和json参数发送数据的格式是不同的。

example1.py :

import requests

r1 = requests.post(
 url="http://127.0.0.1:8089/index/",
 data={
  "username": "amy",
  "password": "123"
 }

 # data='username=amy&password=123'

 # json={
 #  "username": "amy",
 #  "password": "123"
 # }

 # json='username=amy&password=123'
)
print(r1.text)

以上这篇Python requests.post方法中data与json参数区别详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用xmlrpclib模块实现对百度google的ping功能
Jun 02 Python
python自动发送邮件脚本
Jun 20 Python
numpy.ndarray 交换多维数组(矩阵)的行/列方法
Aug 02 Python
Python线程同步的实现代码
Oct 03 Python
pytorch中torch.max和Tensor.view函数用法详解
Jan 03 Python
Python对象的属性访问过程详解
Mar 05 Python
三步解决python PermissionError: [WinError 5]拒绝访问的情况
Apr 22 Python
Python3.7下安装pyqt5的方法步骤(图文)
May 12 Python
Python基于内置函数type创建新类型
Oct 22 Python
Django数据模型中on_delete使用详解
Nov 30 Python
python 基于pygame实现俄罗斯方块
Mar 02 Python
pytorch中F.avg_pool1d()和F.avg_pool2d()的使用操作
May 22 Python
python:解析requests返回的response(json格式)说明
Apr 30 #Python
python 串行执行和并行执行实例
Apr 30 #Python
Django Channel实时推送与聊天的示例代码
Apr 30 #Python
Django ORM 查询表中某列字段值的方法
Apr 30 #Python
Python pip install如何修改默认下载路径
Apr 29 #Python
Django 5种类型Session使用方法解析
Apr 29 #Python
PyQt5连接MySQL及QMYSQL driver not loaded错误解决
Apr 29 #Python
You might like
简单的php写入数据库类代码分享
2011/07/26 PHP
php数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
2011/10/31 PHP
IE8 浏览器Cookie的处理
2009/01/31 Javascript
JavaScript 对任意元素,自定义右键菜单的实现方法
2013/05/08 Javascript
用js通过url传参把数据从一个页面传到另一个页面
2014/09/01 Javascript
javascript实现禁止复制网页内容
2014/12/16 Javascript
详解JavaScript的表达式与运算符
2015/11/30 Javascript
Node.js实用代码段之获取Buffer对象字节长度
2016/03/17 Javascript
详解js的延迟对象、跨域、模板引擎、弹出层、AJAX【附实例下载】
2016/12/19 Javascript
TableSort.js表格排序插件使用方法详解
2017/02/10 Javascript
详解webpack的配置文件entry与output
2017/08/21 Javascript
Vue 组件封装 并使用 NPM 发布的教程
2018/09/30 Javascript
Vue Components 数字键盘的实现
2019/09/18 Javascript
VUE:vuex 用户登录信息的数据写入与获取方式
2019/11/11 Javascript
javascript使用Blob对象实现的下载文件操作示例
2020/04/18 Javascript
React中使用Vditor自定义图片详解
2020/12/25 Javascript
[03:17]DOTA2英雄基础教程 剧毒术士
2013/12/12 DOTA
[01:05:24]Ti4 冒泡赛第二天 iG vs NEWBEE 3
2014/07/15 DOTA
python连接MySQL数据库实例分析
2015/05/12 Python
使用python的pandas库读取csv文件保存至mysql数据库
2018/08/20 Python
python命令行工具Click快速掌握
2019/07/04 Python
python的命名规则知识点总结
2019/10/04 Python
利用python中集合的唯一性实现去重
2020/02/11 Python
python使用ctypes库调用DLL动态链接库
2020/10/22 Python
英国大码女性时装零售商:Evans
2018/08/29 全球购物
快时尚眼镜品牌,全国连锁眼镜店:LOHO眼镜生活
2018/10/08 全球购物
求职信模板
2014/05/23 职场文书
孝敬父母的活动方案
2014/08/31 职场文书
事业单位人员的自我评价范文
2014/09/21 职场文书
村主任“四风”问题个人对照检查材料思想汇报
2014/10/02 职场文书
写给妈妈的感谢信
2015/01/22 职场文书
2019如何书写演讲稿?
2019/07/01 职场文书
python实现监听键盘
2021/04/26 Python
MySQL kill不掉线程的原因
2021/05/07 MySQL
MySQL 百万级数据的4种查询优化方式
2021/06/07 MySQL
python可视化之颜色映射详解
2021/09/15 Python