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 相关文章推荐
pycharm 使用心得(八)如何调用另一文件中的函数
Jun 06 Python
跟老齐学Python之玩转字符串(2)更新篇
Sep 28 Python
Python中的pass语句使用方法讲解
May 14 Python
Python中MySQL数据迁移到MongoDB脚本的方法
Apr 28 Python
使用Python的package机制如何简化utils包设计详解
Dec 11 Python
Python正则表达式和re库知识点总结
Feb 11 Python
利用selenium爬虫抓取数据的基础教程
Jun 10 Python
python pandas 时间日期的处理实现
Jul 30 Python
Python BeautifulReport可视化报告代码实例
Apr 13 Python
Softmax函数原理及Python实现过程解析
May 22 Python
Python3与fastdfs分布式文件系统如何实现交互
Jun 23 Python
python list的index()和find()的实现
Nov 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
全国FM电台频率大全 - 10 江苏省
2020/03/11 无线电
php header Content-Type类型小结
2011/07/03 PHP
Javascript操作select方法大全[新增、修改、删除、选中、清空、判断存在等]
2008/09/26 Javascript
解决js正则匹配换行问题实现代码
2012/12/10 Javascript
去掉gridPanel表头全选框的小例子
2013/07/18 Javascript
jQuery 仿百度输入标签插件附效果图
2014/07/04 Javascript
javascript相关事件的几个概念
2015/05/21 Javascript
jquery任意位置浮动固定层插件用法实例
2015/05/29 Javascript
Bootstrap富文本组件wysiwyg数据保存到mysql的方法
2016/05/09 Javascript
浅谈angularjs $http提交数据探索
2017/01/20 Javascript
angular使用post、get向后台传参的问题实例
2017/05/27 Javascript
angular使用bootstrap方法手动启动的实例代码
2017/07/18 Javascript
vue.js项目打包上线的图文教程
2017/11/16 Javascript
VueAwesomeSwiper在VUE中的使用以及遇到的一些问题
2018/01/11 Javascript
Node.JS循环删除非空文件夹及子目录下的所有文件
2018/03/12 Javascript
对vue中v-on绑定自定事件的实例讲解
2018/09/06 Javascript
AngularJs返回前一页面时刷新一次前面页面的方法
2018/10/09 Javascript
javascript实现切割轮播效果
2019/11/28 Javascript
如何通过vscode运行调试javascript代码
2020/07/24 Javascript
python计算文本文件行数的方法
2015/07/06 Python
Python数据操作方法封装类实例
2017/06/23 Python
python语言中with as的用法使用详解
2018/02/23 Python
Python 文本文件内容批量抽取实例
2018/12/10 Python
numpy.linalg.eig() 计算矩阵特征向量方式
2019/11/29 Python
Python中pyecharts安装及安装失败的解决方法
2020/02/18 Python
Python单例模式的四种创建方式实例解析
2020/03/04 Python
Gina Bacconi官网:吉娜贝康尼连衣裙和礼服
2018/04/24 全球购物
英国最大最好的无人机商店:Drones Direct
2019/07/12 全球购物
物业管理应届生求职信
2013/10/28 职场文书
小学生美德少年事迹
2014/02/02 职场文书
消防隐患整改通知书
2015/04/22 职场文书
小学教师教学反思
2016/02/24 职场文书
先进基层党组织事迹材料2016
2016/02/29 职场文书
2017年寒假社区服务活动总结
2016/04/06 职场文书
MySQL触发器的使用
2021/05/24 MySQL
MongoDB数据库之添删改查
2022/04/26 MongoDB