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操作MongoDB数据库PyMongo库使用方法
Apr 27 Python
Python环境变量设置方法
Aug 28 Python
Python 列表(List) 的三种遍历方法实例 详解
Apr 15 Python
python实现可视化动态CPU性能监控
Jun 21 Python
详解python 注释、变量、类型
Aug 10 Python
PyQt5实现类似别踩白块游戏
Jan 24 Python
通过PHP与Python代码对比的语法差异详解
Jul 10 Python
Django 对象关系映射(ORM)源码详解
Aug 06 Python
使用python实现对元素的长截图功能
Nov 14 Python
python多进程下的生产者和消费者模型
May 07 Python
使用python向MongoDB插入时间字段的操作
May 18 Python
pytorch 实现多个Dataloader同时训练
May 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
浅谈PHP正则表达式中修饰符/i, /is, /s, /isU
2014/10/21 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
2016/07/08 PHP
php版本CKEditor 4和CKFinder安装及配置方法图文教程
2019/06/05 PHP
firefox中JS读取XML文件
2006/12/21 Javascript
script不刷新页面的联动前后代码
2013/09/18 Javascript
Javascript实现多彩雪花从天降散落效果的方法
2015/02/02 Javascript
Javascript中实现trim()函数的两种方法
2015/02/04 Javascript
javascript jquery对form元素的常见操作详解
2016/06/12 Javascript
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
2016/12/15 Javascript
基于jQuery实现左侧菜单栏可折叠功能
2016/12/27 Javascript
详解浏览器渲染页面过程
2017/02/09 Javascript
基于JS实现仿百度百家主页的轮播图效果
2017/03/06 Javascript
在vue中实现简单页面逆传值的方法
2017/11/27 Javascript
JavaScript体验异步更好的解决办法
2018/01/08 Javascript
从vue基础开始创建一个简单的增删改查的实例代码(推荐)
2018/02/11 Javascript
jQuery中常用动画效果函数知识点整理
2018/08/19 jQuery
jQuery+Datatables实现表格批量删除功能【推荐】
2018/10/24 jQuery
JS使用数组实现的队列功能示例
2019/03/04 Javascript
python 与服务器的共享文件夹交互方法
2018/12/27 Python
ActiveMQ:使用Python访问ActiveMQ的方法
2019/01/30 Python
18个Python脚本可加速你的编码速度(提示和技巧)
2019/10/17 Python
python实现根据给定坐标点生成多边形mask的例子
2020/02/18 Python
详解如何在pyqt中通过OpenCV实现对窗口的透视变换
2020/09/20 Python
自我评价的正确写法
2013/09/19 职场文书
高考自主招生自荐信
2013/10/20 职场文书
电脑教师的教学自我评价
2013/11/26 职场文书
教师演讲稿开场白
2014/08/25 职场文书
骨干教师申报材料
2014/12/17 职场文书
毕业生党员个人总结
2015/02/14 职场文书
婚宴主持词
2015/06/30 职场文书
运动会通讯稿300字
2015/07/20 职场文书
《珍珠鸟》教学反思
2016/02/16 职场文书
2019年国庆祝福语(70句)
2019/09/19 职场文书
2020年个人安全保证书参考模板
2020/01/08 职场文书
浅谈PHP7中的一些小技巧
2021/05/29 PHP
使用vue判断当前环境是安卓还是IOS
2022/04/12 Vue.js