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入门篇之对象类型
Oct 17 Python
对于Python中线程问题的简单讲解
Apr 03 Python
python函数形参用法实例分析
Aug 04 Python
python函数的5种参数详解
Feb 24 Python
详解Python下ftp上传文件linux服务器
Jun 21 Python
详解Python with/as使用说明
Dec 13 Python
详解Python中的内建函数,可迭代对象,迭代器
Apr 29 Python
PyTorch搭建一维线性回归模型(二)
May 22 Python
HTML的form表单和django的form表单
Jul 25 Python
对django后台admin下拉框进行过滤的实例
Jul 26 Python
解决Django响应JsonResponse返回json格式数据报错问题
Aug 09 Python
pandas时间序列之pd.to_datetime()的实现
Jun 16 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
escape unescape的php下的实现方法
2007/04/27 PHP
php实现mysql数据库备份类
2008/03/20 PHP
php将数据库导出成excel的方法
2010/05/07 PHP
全局记录程序片段的运行时间 正确找到程序逻辑耗时多的断点
2011/01/06 PHP
PHP对接微信公众平台消息接口开发流程教程
2014/03/25 PHP
PHP获取时间排除周六、周日的两个方法
2014/06/30 PHP
ThinkPHP中使用Ueditor富文本编辑器
2015/09/02 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
PHP使用递归按层级查找数据的方法
2019/11/10 PHP
jQuery之Deferred对象详解
2014/09/04 Javascript
JavaScript声明变量时为什么要加var关键字
2014/09/29 Javascript
Nodejs实现的一个静态服务器实例
2014/12/06 NodeJs
创建js对象和js类的方法汇总
2014/12/24 Javascript
jquery实现翻动fadeIn显示的方法
2015/03/05 Javascript
JavaScript中getUTCSeconds()方法的使用详解
2015/06/11 Javascript
通过JS和PHP两种方法判断用户请求时使用的浏览器类型
2016/09/01 Javascript
D3.js实现文本的换行详解
2016/10/14 Javascript
angular ngClick阻止冒泡使用默认行为的方法
2016/11/03 Javascript
Vue-cli3项目配置Vue.config.js实战记录
2018/07/29 Javascript
layer ui插件显示tips时,修改字体颜色的实现方法
2019/09/11 Javascript
微信小程序在text文本实现多种字体样式
2019/11/08 Javascript
Vue 实现复制功能,不需要任何结构内容直接复制方式
2019/11/09 Javascript
ES6对象操作实例详解
2020/05/23 Javascript
javascript实现前端分页功能
2020/11/26 Javascript
python生成指定尺寸缩略图的示例
2014/05/07 Python
python如何对实例属性进行类型检查
2018/03/20 Python
pycharm激活码快速激活及使用步骤
2020/03/12 Python
Django admin管理工具TabularInline类用法详解
2020/05/14 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
2020/06/17 Python
Python bisect模块原理及常见实例
2020/06/17 Python
python 基于Apscheduler实现定时任务
2020/12/15 Python
印度尼西亚手表和包包商店:Urban Icon
2019/12/12 全球购物
英语专业毕业生自荐信
2013/10/28 职场文书
实习教师个人的自我评价
2013/11/08 职场文书
追悼会上的答谢词
2014/01/10 职场文书
法人授权委托书范本
2014/09/17 职场文书