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中的Queue与多进程
Aug 25 Python
Python简单的制作图片验证码实例
May 31 Python
Python 判断是否为质数或素数的实例
Oct 30 Python
使用python脚本实现查询火车票工具
Jul 19 Python
python 常见字符串与函数的用法详解
Nov 23 Python
python pygame实现方向键控制小球
May 17 Python
Django自带的加密算法及加密模块详解
Dec 03 Python
基于matplotlib xticks用法详解
Apr 16 Python
如何使用python记录室友的抖音在线时间
Jun 29 Python
opencv 图像腐蚀和图像膨胀的实现
Jul 07 Python
Python matplotlib读取excel数据并用for循环画多个子图subplot操作
Jul 14 Python
使用py-spy解决scrapy卡死的问题方法
Sep 29 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
DC动画很好看?新作烂得令人发指,名叫《红色之子》
2020/04/09 欧美动漫
德生PL450的电路分析和低放电路的改进办法
2021/03/02 无线电
PHP采集腾讯微博的实现代码
2012/01/19 PHP
Json_decode 解析json字符串为NULL的解决方法(必看)
2017/02/17 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
2017/08/09 PHP
PHP设计模式之建造者模式定义与用法简单示例
2018/08/13 PHP
Laravel 中使用简单的方法跟踪用户是否在线(推荐)
2019/10/30 PHP
Jquery实现无刷新DropDownList联动实现代码
2010/03/08 Javascript
Jquery ajaxStart()与ajaxStop()方法(实例讲解)
2013/12/18 Javascript
input禁止键盘及中文输入,但可以点击
2014/02/13 Javascript
浅析jquery与checkbox的checked属性的问题
2016/04/27 Javascript
JavaScript基于扩展String实现替换字符串中index处字符的方法
2017/06/13 Javascript
nodejs 搭建简易服务器的图文教程(推荐)
2017/07/18 NodeJs
Js面试算法详解
2018/04/08 Javascript
React Native日期时间选择组件的示例代码
2018/04/27 Javascript
JavaScript中set与get方法用法示例
2018/08/15 Javascript
vue-router启用history模式下的开发及非根目录部署方法
2018/12/23 Javascript
NodeJs操作MongoDB教程之分页功能以及常见问题
2019/04/09 NodeJs
小白教程|一小时上手最流行的前端框架vue(推荐)
2019/04/10 Javascript
JS正则表达式封装与使用操作示例
2019/05/15 Javascript
简述ES6新增关键字let与var的区别
2019/08/23 Javascript
[01:01:18]VP vs NIP 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python基础教程之字典操作详解
2014/03/25 Python
对于Python异常处理慎用“except:pass”建议
2015/04/02 Python
Python读取和处理文件后缀为.sqlite的数据文件(实例讲解)
2017/06/27 Python
python pygame实现2048游戏
2018/11/20 Python
75条笑死人的知乎神回复,用60行代码就爬完了
2019/05/06 Python
Django之PopUp的具体实现方法
2019/08/31 Python
Python转换字典成为对象,可以用"."方式访问对象属性实例
2020/05/11 Python
零基础学Python之前需要学c语言吗
2020/07/21 Python
Python request中文乱码问题解决方案
2020/09/17 Python
小小的船教学反思
2014/02/21 职场文书
公司演讲稿开场白
2014/08/25 职场文书
教师辞职信范文
2015/02/28 职场文书
综合办公室岗位职责
2015/04/11 职场文书
2015年幼儿园中班下学期工作总结
2015/05/22 职场文书