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简单的函数定义和用法实例
May 07 Python
python操作redis的方法
Jul 07 Python
python读取二进制mnist实例详解
May 31 Python
关于Python数据结构中字典的心得
Dec 04 Python
为何人工智能(AI)首选Python?读完这篇文章你就知道了(推荐)
Apr 06 Python
python opencv 批量改变图片的尺寸大小的方法
Jun 28 Python
Pytorch实现的手写数字mnist识别功能完整示例
Dec 13 Python
Python reshape的用法及多个二维数组合并为三维数组的实例
Feb 07 Python
Python 如何创建一个线程池
Jul 28 Python
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
Apr 27 Python
Python预测分词的实现
Jun 18 Python
Python四款GUI图形界面库介绍
Jun 05 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
提问的智慧(2)
2006/10/09 PHP
php实现删除指定目录下相关文件的方法
2014/10/20 PHP
PHP的Socket通信之UDP通信实例
2015/07/02 PHP
PHP实现图的邻接矩阵表示及几种简单遍历算法分析
2017/11/24 PHP
浅谈PHP5.6 与 PHP7.0 区别
2019/10/09 PHP
JS setCapture 区域外事件捕捉
2010/03/18 Javascript
jQuery Validation实例代码 让验证变得如此容易
2010/10/18 Javascript
基于JQUERY的两个ListBox子项互相调整的实现代码
2011/05/07 Javascript
使用按钮控制以何种方式打开新窗口的属性介绍
2012/12/17 Javascript
基于JavaScript实现继承机制之原型链(prototype chaining)的详解
2013/05/07 Javascript
使用jquery实现div的tab切换实例代码
2013/05/27 Javascript
node.js WEB开发中图片验证码的实现方法
2014/06/03 Javascript
jQuery实现菜单感应鼠标滑动动画效果的方法
2015/02/28 Javascript
javascript中SetInterval与setTimeout的定时器用法
2015/08/24 Javascript
JS模态窗口返回值兼容问题的完美解决方法
2016/05/28 Javascript
jquery中each循环的简单回滚操作
2017/05/05 jQuery
JavaScript全屏和退出全屏事件总结(附代码)
2017/08/17 Javascript
微信小程序利用canvas 绘制幸运大转盘功能
2018/07/06 Javascript
用node撸一个监测复联4开售短信提醒的实现代码
2019/04/10 Javascript
深入了解响应式React Native Echarts组件
2019/05/29 Javascript
vue 获取及修改store.js里的公共变量实例
2019/11/06 Javascript
Django的session中对于用户验证的支持
2015/07/23 Python
Python实现对一个函数应用多个装饰器的方法示例
2018/02/09 Python
用python生成与调用cntk模型代码演示方法
2019/08/26 Python
python3安装OCR识别库tesserocr过程图解
2020/04/02 Python
django rest framework 过滤时间操作
2020/07/12 Python
解决pytorch 保存模型遇到的问题
2021/03/03 Python
Perry Ellis官网:美国男士品味服装
2016/12/09 全球购物
业务部主管岗位职责
2014/01/29 职场文书
九一八事变演讲稿范文
2014/09/14 职场文书
银行反四风对照检查材料
2014/09/29 职场文书
学校安全管理制度
2015/08/06 职场文书
Python一行代码实现自动发邮件功能
2021/05/30 Python
Go语言应该什么情况使用指针
2021/07/25 Golang
你真的会用Mysql的explain吗
2022/03/31 MySQL
开发微信小程序之WXSS样式教程
2022/04/18 HTML / CSS