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基础教程之浅拷贝和深拷贝实例详解
Jul 15 Python
Python中list查询及所需时间计算操作示例
Jun 21 Python
python使用scrapy发送post请求的坑
Sep 04 Python
python实现在图片上画特定大小角度矩形框
Oct 24 Python
python Pexpect 实现输密码 scp 拷贝的方法
Jan 03 Python
面向对象学习之pygame坦克大战
Sep 11 Python
Python+Redis实现布隆过滤器
Dec 08 Python
Python代码生成视频的缩略图的实例讲解
Dec 22 Python
Python-numpy实现灰度图像的分块和合并方式
Jan 09 Python
解决tensorboard多个events文件显示紊乱的问题
Feb 15 Python
Python 给下载文件显示进度条和下载时间的实现
Apr 02 Python
Python使用os.listdir和os.walk获取文件路径
May 21 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的面试题集
2006/11/19 PHP
随时给自己贴的图片加文字的php水印
2007/03/16 PHP
ThinkPHP空模块和空操作详解
2014/06/30 PHP
php常用正则函数实例小结
2016/12/29 PHP
tp5框架使用composer实现日志记录功能示例
2019/01/10 PHP
些很实用且必用的小脚本代码
2006/06/26 Javascript
js 鼠标点击事件及其它捕获
2009/06/04 Javascript
有道JavaScript监听浏览器的问题
2010/06/23 Javascript
jquery特效 幻灯片效果示例代码
2013/07/16 Javascript
jQuery实现图片信息的浮动显示实例代码
2013/08/28 Javascript
在ASP.NET中使用JavaScript脚本的方法
2013/11/12 Javascript
JS动态修改iframe内嵌网页地址的方法
2015/04/01 Javascript
JavaScript合并两个数组并去除重复项的方法
2015/06/13 Javascript
JS+CSS实现的竖向简洁折叠菜单效果代码
2015/10/22 Javascript
ES6知识点整理之Proxy的应用实例详解
2019/04/16 Javascript
微信小程序实现多选框全选与取消全选功能示例
2019/05/14 Javascript
JS控制GIF图片的停止与显示
2019/10/24 Javascript
VuePress 中如何增加用户登录功能
2019/11/29 Javascript
Vue中多元素过渡特效的解决方案
2020/02/05 Javascript
Python中的面向对象编程详解(上)
2015/04/13 Python
Python常见格式化字符串方法小结【百分号与format方法】
2016/09/18 Python
Python判断变量是否为Json格式的字符串示例
2017/05/03 Python
python将print输出的信息保留到日志文件中
2019/09/27 Python
解决pyCharm中 module 调用失败的问题
2020/02/12 Python
css3模拟jq点击事件的实例代码
2017/07/06 HTML / CSS
详解利用canvas实现环形进度条的方法
2019/06/12 HTML / CSS
台湾专柜女包:KINAZ
2019/12/26 全球购物
德国家具、照明、家居用品网上商店:Wayfair.de
2020/02/13 全球购物
如何设置Java的运行环境
2013/04/05 面试题
介绍一下UNIX启动过程
2013/11/14 面试题
学习心得体会
2014/01/01 职场文书
应届毕业生如何写求职信
2014/02/16 职场文书
公司周年庆典策划方案
2014/05/17 职场文书
中秋晚会策划方案
2014/06/12 职场文书
2015年护士节活动策划方案
2015/05/04 职场文书
.Net Core导入千万级数据至Mysql的步骤
2021/05/24 MySQL