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实现统计代码行数的方法
May 22 Python
浅谈python装饰器探究与参数的领取
Dec 01 Python
Python用sndhdr模块识别音频格式详解
Jan 11 Python
python实现简易版计算器
Jun 22 Python
Python面向对象程序设计之私有属性及私有方法示例
Apr 08 Python
python实现小球弹跳效果
May 10 Python
使用django和vue进行数据交互的方法步骤
Nov 11 Python
python创建n行m列数组示例
Dec 02 Python
基于TensorBoard中graph模块图结构分析
Feb 15 Python
OpenCV 使用imread()函数读取图片的六种正确姿势
Jul 09 Python
基于python调用jenkins-cli实现快速发布
Aug 14 Python
一篇文章搞懂python的转义字符及用法
Sep 03 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的array_diff()函数在处理大数组时的效率问题
2011/11/27 PHP
php中定时计划任务的实现原理
2013/01/08 PHP
php 判断字符串中是否包含html标签
2014/02/17 PHP
PHP计算一年多少个星期和每周的开始和结束日期
2014/07/01 PHP
浅谈PHP Cookie处理函数
2016/06/10 PHP
JavaScript 对任意元素,自定义右键菜单的实现方法
2013/05/08 Javascript
js中一维数组和二位数组中的几个问题示例说明
2014/07/17 Javascript
jQuery对象的length属性用法实例
2014/12/27 Javascript
JavaScript语言精粹经典实例(整理篇)
2016/06/07 Javascript
jQuery中animate的几种用法与注意事项
2016/12/12 Javascript
nodejs async异步常用函数总结(推荐)
2017/11/17 NodeJs
微信小程序slider组件使用详解
2018/01/31 Javascript
浅谈vue-cli 3.0.x 初体验
2018/04/11 Javascript
浅谈微信小程序flex布局基础
2018/09/10 Javascript
webpack的CSS加载器的使用
2018/09/11 Javascript
Iview Table组件中各种组件扩展的使用
2018/10/20 Javascript
vue计算属性get和set用法示例
2019/02/08 Javascript
uni-app 组件里面获取元素宽高的实现
2019/12/27 Javascript
element-ui点击查看大图的方法示例
2020/12/14 Javascript
js实现头像上传并且可预览提交
2020/12/25 Javascript
[57:16]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第二场
2014/05/26 DOTA
有关wxpython pyqt内存占用问题分析
2014/06/09 Python
python进阶教程之循环对象
2014/08/30 Python
浅谈Python中的数据类型
2015/05/05 Python
Python 的类、继承和多态详解
2017/07/16 Python
Python cookbook(数据结构与算法)从字典中提取子集的方法示例
2018/03/22 Python
Python采集代理ip并判断是否可用和定时更新的方法
2018/05/07 Python
AUC计算方法与Python实现代码
2020/02/28 Python
python批量修改交换机密码的示例
2020/09/22 Python
python Xpath语法的使用
2020/11/26 Python
html5中 media(播放器)的api使用指南
2014/12/26 HTML / CSS
什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
2014/01/19 面试题
绿化工程实施方案
2014/03/17 职场文书
有子女的离婚协议书怎么写(范本)
2014/09/29 职场文书
中层干部考核评语
2015/01/04 职场文书
小学生纪律委员竞选稿
2015/11/19 职场文书