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中使用smtplib和email模块发送邮件实例
Apr 22 Python
Python返回真假值(True or False)小技巧
Apr 10 Python
python使用xmlrpclib模块实现对百度google的ping功能
Jun 02 Python
Python编程实现正则删除命令功能
Aug 30 Python
详解Python中 sys.argv[]的用法简明解释
Dec 20 Python
python实时监控cpu小工具
Jun 21 Python
python-opencv颜色提取分割方法
Dec 08 Python
浅谈Django中view对数据库的调用方法
Jul 18 Python
DataFrame 数据合并实现(merge,join,concat)
Jun 14 Python
python实战之用emoji表情生成文字
May 08 Python
Python实现socket库网络通信套接字
Jun 04 Python
Python实现8种常用抽样方法
Jun 27 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读取javascript设置的cookies的代码
2010/04/12 PHP
如何利用PHP执行.SQL文件
2013/07/05 PHP
PHP版本的选择5.2.17 5.3.27 5.3.28 5.4 5.5兼容性问题分析
2016/04/04 PHP
Yii2增删改查之查询 where参数详细介绍
2016/08/08 PHP
购物车实现的几种方式优缺点对比
2018/05/02 PHP
使用Modello编写JavaScript类
2006/12/22 Javascript
用js实现下载远程文件并保存在本地的脚本
2008/05/06 Javascript
javascript 二分法(数组array)
2010/04/24 Javascript
js自定义事件代码说明
2011/01/31 Javascript
TinyMCE汉化及本地上传图片功能实例详解
2016/05/31 Javascript
JavaScript6 let 新语法优势介绍
2016/07/15 Javascript
JS数组排序方法实例分析
2016/12/16 Javascript
JavaScript运动框架 链式运动到完美运动(五)
2017/05/18 Javascript
JavaScript设计模式之代理模式简单实例教程
2018/07/03 Javascript
Python 过滤字符串的技巧,map与itertools.imap
2008/09/06 Python
跟老齐学Python之for循环语句
2014/10/02 Python
python通过装饰器检查函数参数数据类型的方法
2015/03/13 Python
python使用fileinput模块实现逐行读取文件的方法
2015/04/29 Python
python bottle框架支持jquery ajax的RESTful风格的PUT和DELETE方法
2017/05/24 Python
python3 flask实现文件上传功能
2020/03/20 Python
python-opencv 将连续图片写成视频格式的方法
2019/01/08 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
2019/03/27 Python
python并发编程 Process对象的其他属性方法join方法详解
2019/08/20 Python
python dataframe NaN处理方式
2019/12/26 Python
Python装饰器结合递归原理解析
2020/07/02 Python
Python中实现一行拆多行和多行并一行的示例代码
2020/09/06 Python
python Protobuf定义消息类型知识点讲解
2021/03/02 Python
德国机车企业:FC-Moto
2017/10/27 全球购物
保险专业大专生求职信
2013/10/26 职场文书
管理失职检讨书
2014/02/12 职场文书
市场营销管理毕业生自荐信
2014/03/03 职场文书
离婚协议书怎么写的
2014/12/14 职场文书
银行求职信范文怎么写
2015/03/20 职场文书
导游词之珠海轮廓
2019/10/25 职场文书
浅析Redis Sentinel 与 Redis Cluster
2021/06/24 Redis
MySQL中EXPLAIN语句及用法
2022/05/20 MySQL