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读写Json涉及到中文的处理方法
Sep 12 Python
Tensorflow 实现修改张量特定元素的值方法
Jul 30 Python
Python列表生成式与生成器操作示例
Aug 01 Python
Pandas Shift函数的基础入门学习笔记
Nov 16 Python
python 下 CMake 安装配置 OPENCV 4.1.1的方法
Sep 30 Python
在python shell中运行python文件的实现
Dec 21 Python
Python操作Sqlite正确实现方法解析
Feb 05 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
Mar 19 Python
django教程如何自学
Jul 31 Python
pycharm中选中一个单词替换所有重复单词的实现方法
Nov 17 Python
python爬取代理ip的示例
Dec 18 Python
Python如何实现感知器的逻辑电路
Dec 25 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
phpize的深入理解
2013/06/03 PHP
PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
2014/06/12 PHP
浅析PHP7新功能及语法变化总结
2016/06/17 PHP
PHP 接入支付宝即时到账功能
2016/09/18 PHP
详解使用php调用微信接口上传永久素材
2017/04/11 PHP
javascript for循环设法提高性能
2010/02/24 Javascript
JS维吉尼亚密码算法实现代码
2010/11/09 Javascript
javascript 延迟加载技术(lazyload)简单实现
2011/01/17 Javascript
jQuery控制Div拖拽效果完整实例分析
2015/04/15 Javascript
JavaScript如何调试有哪些建议和技巧附五款有用的调试工具
2015/10/28 Javascript
jquery实现上传文件大小类型的验证例子(推荐)
2016/06/25 Javascript
AngularJs bootstrap搭载前台框架——基础页面
2016/09/01 Javascript
angularjs中ng-attr的用法详解
2016/12/31 Javascript
基于node.js之调试器详解
2017/08/22 Javascript
Mongoose中document与object的区别示例详解
2017/09/18 Javascript
vue底部加载更多的实例代码
2018/06/29 Javascript
基于JavaScript实现一个简单的Vue
2018/09/26 Javascript
JS原生带缩略图的图片切换效果
2018/10/10 Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
2020/06/26 Javascript
[01:35]2018完美盛典章节片——共竞
2018/12/17 DOTA
Python 如何访问外围作用域中的变量
2016/09/11 Python
利用Python如何制作好玩的GIF动图详解
2018/07/11 Python
对python指数、幂数拟合curve_fit详解
2018/12/29 Python
python 在指定范围内随机生成不重复的n个数实例
2019/01/28 Python
Python for循环与getitem的关系详解
2020/01/02 Python
python对象销毁实例(垃圾回收)
2020/01/16 Python
python生成大写32位uuid代码
2020/03/03 Python
英国天然有机美容护肤品:Neal’s Yard Remedies
2018/05/05 全球购物
早晨薰衣草在线女性精品店:Morning Lavender
2021/01/04 全球购物
历史系毕业生自荐信
2013/10/28 职场文书
质检员的岗位职责
2013/11/15 职场文书
酒店管理求职信
2014/06/09 职场文书
金融系毕业生自荐书
2014/07/08 职场文书
电焊工岗位工作职责
2014/07/09 职场文书
2016道德模范先进事迹材料
2016/02/26 职场文书
Redis如何使用乐观锁(CAS)保证数据一致性
2022/03/25 Redis