在通过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参数区别详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。
问题内容: 我正在经历一些面试问题。对于这个问题,我无法给出可靠的答案: Java中参数与参数之间的区别? 它们有何不同? 问题答案: 通常,参数是方法定义中显示的参数。参数是在运行时传递给方法的实例。 您可以在此处查看说明:http : //en.wikipedia.org/wiki/Parameter_(computer_programming)#Parameters_and_argument
本文向大家介绍详解Mybatis中的 ${} 和 #{}区别与用法,包括了详解Mybatis中的 ${} 和 #{}区别与用法的使用技巧和注意事项,需要的朋友参考一下 Mybatis 的Mapper.xml语句中parameterType向SQL语句传参有两种方式:#{}和${} 我们经常使用的是#{},一般解说是因为这种方式可以防止SQL注入,简单的说#{}这种方式SQL语句是经过预编译的,它是
本文向大家介绍c#中(&&,||)与(&,|)的区别详解,包括了c#中(&&,||)与(&,|)的区别详解的使用技巧和注意事项,需要的朋友参考一下 对于(&&,||),运算的对象是逻辑值,也就是True/False &&相当与中文的并且,||相当于中文的或者 。(叫做逻辑运算符又叫短路运算符) 运算结果只有下列四种情况。 True && True = True (左边为true,再验证右
本文向大家介绍jquery中attr、prop、data区别与用法分析,包括了jquery中attr、prop、data区别与用法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jquery中attr、prop、data区别与用法。分享给大家供大家参考,具体如下: 在高版本的jquery中获取标签的属性,可以使用attr()、prop()、data(),那么这些方法有什么区别呢? 对于
本文向大家介绍Python json模块与jsonpath模块区别详解,包括了Python json模块与jsonpath模块区别详解的使用技巧和注意事项,需要的朋友参考一下 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。适用于进行数据交互的场景,比如网站前台与后台之间的数据交互。 JS
本文向大家介绍Go中recover与panic区别详解,包括了Go中recover与panic区别详解的使用技巧和注意事项,需要的朋友参考一下 概念 panic 与 recover 是 Go 的两个内置函数,这两个内置函数用于处理 Go 运行时的错误。 panic用于主动抛出错误, recover 用来捕获panic 抛出的错误。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支