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之永远强大的函数
Sep 14 Python
使用Python保存网页上的图片或者保存页面为截图
Mar 05 Python
Python3 导入上级目录中的模块实例
Feb 16 Python
Flask框架踩坑之ajax跨域请求实现
Feb 22 Python
python实现Virginia无密钥解密
Mar 20 Python
详解利用OpenCV提取图像中的矩形区域(PPT屏幕等)
Jul 01 Python
pygame实现俄罗斯方块游戏(基础篇2)
Oct 29 Python
Python3 虚拟开发环境搭建过程(图文详解)
Jan 06 Python
python、PyTorch图像读取与numpy转换实例
Jan 13 Python
关于pytorch中全连接神经网络搭建两种模式详解
Jan 14 Python
python3 自动打印出最新版本执行的mysql2redis实例
Apr 09 Python
selenium学习教程之定位以及切换frame(iframe)
Jan 04 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中的密码加密的解决方案总结
2016/10/26 PHP
Javascript操作select方法大全[新增、修改、删除、选中、清空、判断存在等]
2008/09/26 Javascript
由document.body和document.documentElement想到的
2009/04/13 Javascript
jQuery学习7 操作JavaScript对象和集合的函数
2010/02/07 Javascript
javascript仿qq界面的折叠菜单实现代码
2012/12/12 Javascript
为Javascript中的String对象添加去除左右空格的方法(示例代码)
2013/11/30 Javascript
jquery选择器原理介绍($()使用方法)
2014/03/25 Javascript
在JS数组特定索引处指定位置插入元素的技巧
2014/08/24 Javascript
JS基于cookie实现来宾统计记录访客信息的方法
2015/08/04 Javascript
JavaScript重定向URL参数的两种方法小结
2016/10/19 Javascript
前端开发必知的15个jQuery小技巧
2017/01/22 Javascript
微信小程序学习之数据处理详解
2017/07/05 Javascript
最基础的vue.js双向绑定操作
2017/08/23 Javascript
vue监听scroll的坑的解决方法
2017/09/07 Javascript
React如何将组件渲染到指定DOM节点详解
2017/09/08 Javascript
详解js的作用域、预解析机制
2018/02/05 Javascript
基于layui内置模块(element常用元素的操作)
2019/09/20 Javascript
通过实例解析JavaScript for in及for of区别
2020/06/15 Javascript
采用Psyco实现python执行速度提高到与编译语言一样的水平
2014/10/11 Python
python实现同时给多个变量赋值的方法
2015/04/30 Python
Python 类与元类的深度挖掘 I【经验】
2016/05/06 Python
Python3.5.3下配置opencv3.2.0的操作方法
2018/04/02 Python
python 常用的基础函数
2018/07/10 Python
Python延时操作实现方法示例
2018/08/14 Python
python 多线程中子线程和主线程相互通信方法
2018/11/09 Python
如何用python写个模板引擎
2021/01/14 Python
世界上最大的二手相机店:KEN
2017/05/17 全球购物
美国宠物美容和宠物用品购物网站:Cherrybrook
2018/12/07 全球购物
商务日语专业毕业生求职信
2013/10/26 职场文书
大学毕业生个人自荐信范文
2014/01/08 职场文书
学生党员思想汇报范文
2014/01/09 职场文书
民事诉讼授权委托书范文
2014/08/02 职场文书
文员转正自我鉴定怎么写
2014/09/29 职场文书
标准离婚协议书(2014版)
2014/10/05 职场文书
黄石寨导游词
2015/02/05 职场文书
【海涛教你打DOTA】死灵飞龙第一视角解说
2022/04/01 DOTA