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开发vim插件及心得分享
Nov 04 Python
python列表的常用操作方法小结
May 21 Python
在java中如何定义一个抽象属性示例详解
Aug 18 Python
python3.6.3转化为win-exe文件发布的方法
Oct 31 Python
Python实现多进程的四种方式
Feb 22 Python
详解python爬虫系列之初识爬虫
Apr 06 Python
python利用7z批量解压rar的实现
Aug 07 Python
python实现修改固定模式的字符串内容操作示例
Dec 30 Python
Python tkinter 下拉日历控件代码
Mar 04 Python
使用pth文件添加Python环境变量方式
May 26 Python
keras topN显示,自编写代码案例
Jul 03 Python
django 模型字段设置默认值代码
Jul 15 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实现的MySQL数据浏览器
2007/03/11 PHP
对PHP新手的一些建议(PHP学习经验总结)
2014/08/20 PHP
PHP MySql增删改查的简单实例
2016/06/21 PHP
PHP实现无限极分类的两种方式示例【递归和引用方式】
2019/03/25 PHP
使用laravel指定日志文件记录任意日志
2019/10/17 PHP
通用JS事件写法实现代码
2009/01/07 Javascript
js移除事件 js绑定事件实例应用
2012/11/28 Javascript
jQuery常用的一些技巧汇总
2016/03/26 Javascript
每个程序员都需要学习 JavaScript 的7个理由小结
2016/09/03 Javascript
js控制文本框只能输入中文、英文、数字与指定特殊符号的实现代码
2016/09/09 Javascript
使用ReactJS实现tab页切换、菜单栏切换、手风琴切换和进度条效果
2016/10/17 Javascript
bootstrap选项卡使用方法解析
2017/01/11 Javascript
jQuery实现获取动态添加的标签对象示例
2018/06/28 jQuery
Vue实现美团app的影院推荐选座功能【推荐】
2018/08/29 Javascript
详解React之key的使用和实践
2018/09/29 Javascript
jquery+ajax实现上传图片并显示上传进度功能【附php后台接收】
2019/06/06 jQuery
微信小程序事件流原理解析
2019/11/27 Javascript
JS原形与原型链深入详解
2020/05/09 Javascript
基于ant design日期控件使用_仅月份的操作
2020/10/27 Javascript
[56:56]VG vs LGD 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
python2 与python3的print区别小结
2018/01/16 Python
python定向爬取淘宝商品价格
2018/02/27 Python
Python中if elif else及缩进的使用简述
2018/05/31 Python
selenium设置proxy、headers的方法(phantomjs、Chrome、Firefox)
2018/11/29 Python
Python实现统计英文文章词频的方法分析
2019/01/28 Python
Python修改文件往指定行插入内容的实例
2019/01/30 Python
django-crontab 定时执行任务方法的实现
2019/09/06 Python
Python如何进行时间处理
2020/08/06 Python
中国高端家电购物商城:顺电
2018/03/04 全球购物
什么是数据库锁?Oracle中都有哪些类型的锁?
2015/08/21 面试题
Java面试题:为什么要用Java
2012/05/11 面试题
公司门卫工作职责
2014/06/28 职场文书
调研座谈会发言材料
2014/08/23 职场文书
汤姆叔叔的小屋读书笔记
2015/06/30 职场文书
穷人该怎么创业?谨记以下几点
2019/07/11 职场文书
vscode远程免密登入Linux服务器的配置方法
2022/06/28 Servers