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参数和作用域的使用
Nov 01 Python
Python2中的raw_input() 与 input()
Jun 12 Python
利用Python实现Windows下的鼠标键盘模拟的实例代码
Jul 13 Python
Python实现图片拼接的代码
Jul 02 Python
浅谈Scrapy网络爬虫框架的工作原理和数据采集
Feb 07 Python
Python中的异常处理try/except/finally/raise用法分析
Feb 28 Python
django中使用POST方法获取POST数据
Aug 20 Python
Python全栈之列表数据类型详解
Oct 01 Python
Python搭建代理IP池实现获取IP的方法
Oct 27 Python
基于python实现蓝牙通信代码实例
Nov 19 Python
Python图像处理库PIL的ImageFilter模块使用介绍
Feb 26 Python
使用Python制作一个数据预处理小工具(多种操作一键完成)
Feb 07 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
在项目中寻找代码的坏命名
2012/07/14 PHP
PHP反射使用实例和PHP反射API的中文说明
2014/07/02 PHP
php获取twitter最新消息的方法
2015/04/14 PHP
php pdo oracle中文乱码的快速解决方法
2016/05/16 PHP
PHP7.0连接DB操作实例分析【基于mysqli】
2019/09/26 PHP
JavaScript 浏览器验证代码(来自discuz)
2010/07/17 Javascript
javascript中的一些注意事项 更新中
2010/12/06 Javascript
20个非常棒的 jQuery 幻灯片插件和教程分享
2011/08/23 Javascript
ASP.NET jQuery 实例6 (实现CheckBoxList成员全选或全取消)
2012/01/13 Javascript
JS中的构造函数详细解析
2014/03/10 Javascript
php+ajax+jquery实现点击加载更多内容
2015/05/03 Javascript
js实现仿阿里巴巴城市选择框效果实例
2015/06/24 Javascript
JavaScript中innerHTML,innerText,outerHTML的用法及区别
2015/09/01 Javascript
深入分析jsonp协议原理
2015/09/26 Javascript
用jQuery旋转插件jqueryrotate制作转盘抽奖
2017/02/10 Javascript
关于javascript sort()排序你可能忽略的一点理解
2017/07/18 Javascript
Angular4开发解决跨域问题详解
2017/08/28 Javascript
浅谈React深度编程之受控组件与非受控组件
2017/12/26 Javascript
vue.js 实现点击按钮动态添加li的方法
2018/09/07 Javascript
vue-cli3使用 DllPlugin 实现预编译提升构建速度
2019/04/24 Javascript
Javascript Dom元素获取和添加详解
2019/09/24 Javascript
echarts实现折线图的拖拽效果
2019/12/19 Javascript
Python 文件操作技巧(File operation) 实例代码分析
2008/08/11 Python
Python使用Turtle模块绘制五星红旗代码示例
2017/12/11 Python
Python基于Flask框架配置依赖包信息的项目迁移部署
2018/03/02 Python
Python解决八皇后问题示例
2018/04/22 Python
django 实现电子支付功能的示例代码
2018/07/25 Python
Python设计模式之策略模式实例详解
2019/01/21 Python
html5指南-6.如何创建离线web应用程序实现离线访问
2013/01/07 HTML / CSS
世界上最大的家庭自动化公司:Smarthome
2017/12/20 全球购物
欧洲领先的技术商店:eibmarkt.com
2019/05/10 全球购物
小学后勤管理制度
2014/01/14 职场文书
大宝sod蜜广告词
2014/03/21 职场文书
青春寄语大全
2014/04/09 职场文书
文明工地标语
2014/06/16 职场文书
2016年五一促销广告语
2016/01/28 职场文书