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实现Windows上气泡提醒效果的方法
Jun 03 Python
详解python之简单主机批量管理工具
Jan 27 Python
python利用不到一百行代码实现一个小siri
Mar 02 Python
详解Python发送email的三种方式
Oct 18 Python
python爬取内容存入Excel实例
Feb 20 Python
详解numpy矩阵的创建与数据类型
Oct 18 Python
基于TensorFlow中自定义梯度的2种方式
Feb 04 Python
Python计算指定日期是今年的第几天(三种方法)
Mar 26 Python
keras实现调用自己训练的模型,并去掉全连接层
Jun 09 Python
Django封装交互接口代码
Jul 12 Python
pycharm中使用request和Pytest进行接口测试的方法
Jul 31 Python
python 使用tkinter+you-get实现视频下载器
Nov 17 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 编写的 25个游戏脚本
2009/05/11 PHP
php数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
2011/11/02 PHP
CodeIgniter控制器之业务逻辑实例分析
2016/01/20 PHP
Zend Framework教程之资源(Resources)用法实例详解
2016/03/14 PHP
使用PHP连接数据库_实现用户数据的增删改查的整体操作示例
2017/09/01 PHP
PHP 多任务秒级定时器的实现方法
2018/05/13 PHP
Laravel框架实现定时发布任务的方法
2018/08/16 PHP
javascript 处理HTML元素必须避免使用的一种方法
2009/07/30 Javascript
javascript测试题练习代码
2012/10/10 Javascript
谈谈关于JavaScript 中的 MVC 模式
2013/04/11 Javascript
js 本地预览的简单实现方法
2014/02/18 Javascript
javasript实现密码的隐藏与显示
2015/05/08 Javascript
详解AngularJS 模态对话框
2016/04/07 Javascript
详解Vue监听数据变化原理
2017/03/08 Javascript
JS简单判断字符在另一个字符串中出现次数的2种常用方法
2017/04/20 Javascript
微信小程序的日期选择器的实例详解
2017/09/29 Javascript
Django中使用jquery的ajax进行数据交互的实例代码
2017/10/15 jQuery
关于JavaScript语句后面的分号问题
2017/12/07 Javascript
javascript自定义日期比较函数用法示例
2019/07/22 Javascript
微信小程序自定义支持图片的弹窗
2020/12/21 Javascript
[04:03]DOTA2英雄梦之声_第02期_风暴之灵
2014/06/30 DOTA
[01:18:21]EG vs TNC Supermajor小组赛B组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
python的几种开发工具介绍
2007/03/07 Python
python 返回列表中某个值的索引方法
2018/11/07 Python
对Pytorch中nn.ModuleList 和 nn.Sequential详解
2019/08/18 Python
Python利用FFT进行简单滤波的实现
2020/02/26 Python
python 使用csv模块读写csv格式文件的示例
2020/12/02 Python
python 对xml解析的示例
2021/02/27 Python
如何给HTML标签中的文本设置修饰线
2019/11/18 HTML / CSS
电子信息工程专业推荐信
2014/02/14 职场文书
公司财务流程之主管工作流程
2014/03/03 职场文书
机械加工与数控专业自荐书
2014/06/04 职场文书
2015年中学团委工作总结
2015/07/22 职场文书
浅谈vue2的$refs在vue3组合式API中的替代方法
2021/04/18 Vue.js
在前女友婚礼上,用Python破解了现场的WIFI还把名称改成了
2021/05/28 Python
uni-app 微信小程序授权登录的实现步骤
2022/02/18 Javascript