Flask(7)- request 对象(下)

简介: Flask(7)- request 对象(下)

postman 发起请求的结果


/addUser

image.png

/addUser2

控制台输出

form = ImmutableMultiDict([('name', 'poloyy'), ('age', '12')])

args = ImmutableMultiDict([])

用 args 属性的话得到是一个空字典哦

 

/addUser3

控制台输出

form = ImmutableMultiDict([('name', 'poloyy'), ('age', '12')])

json = None

用 json 属性的话得到是一个 None 哦,所以无论如何都不要用 json 获取 form-data 哟!

 

/addUser4

image.png

可以看到 values 属性也能拿到 form 表单提交的数据哦

 

获取 Json 数据的栗子


代码

#!usr/bin/env python
# -*- coding:utf-8 _*-
"""
# author: 小菠萝测试笔记
# blog:  https://www.cnblogs.com/poloyy/
# time: 2021/7/11 1:47 下午
# file: 5_request_form.py
"""
from flask import Flask, request
app = Flask(__name__)
@app.route('/addJson', methods=['POST'])
def check_login():
    return {"name": request.json['name'], "age": request.json['age']}
@app.route('/addJson2', methods=['POST'])
def check_login2():
    print('json =', request.json)
    print('args =', request.args)
    return "good"
@app.route('/addJson3', methods=['POST'])
def check_login3():
    print('json =', request.json)
    print('form =', request.form)
    return "good"
@app.route('/addJson4', methods=['POST'])
def check_login4():
    print('json =', request.json, type(request.json))
    print('values =', request.values)
    return {"name": request.json['name'], "age": request.json['age']}
if __name__ == '__main__': app.run(debug=True)


  • 下面我会用 postman 统一通过 raw-json,就是 Json 格式的请求体来传数据
  • 在 Flask 里面,把四种获取请求数据的属性都写一遍,然后看看最后的结果,提前帮大家踩坑

 

postman 发起请求的结果


/addJson

image.png

/addJson2

json = {'age': '12', 'name': 'poloyy'}

args = ImmutableMultiDict([])

用 args 属性的话得到是一个空字典哦

 

/addJson3

json = {'age': '12', 'name': 'poloyy'}

form = ImmutableMultiDict([])

用 form 属性的话得到是一个空字典哦

 

/addJson4

image.png

这里要注意的是,当你的请求体是 Json 时,是不能通过 values 来获取请求数据哦!!

最后来看看 request.json 会返回什么吧

json = {'age': '12', 'name': 'poloyy'} <class'dict'>

request.json 拿到的就是 Json 格式的请求体,并且自动转换成字典了哦!

 

为什么 requests.values 能获取 form、args 的数据,但是拿不到 json 的数据呢?


request.values 源码

image.png

  • 能看到,它本质就是获取 args、form 的数据,但不包含 json 数据
  • 但是这里有个重点,只有你的请求方法不为 GET 的时候,发送 form 表单数据才能通过 request.values 拿到请求数据
  • 来试试是不是真的这样

 

代码

@app.route('/query4', methods=["GET", "POST"])
def query4():
    print(request.form)
    print(request.args)
    print(request.values)
    return {"name": request.values['name'], "age": request.values['age']}


postman 发起 GET 请求,form-data 传数据

image.png

直接报错,找不到对应的 name key,因为 request.values 是空的

 

控制台输出

ImmutableMultiDict([('name', 'poloyy'), ('age', '12')])

CombinedMultiDict([ImmutableMultiDict([])])

ImmutableMultiDict([])

很明显,request.form 是能拿到数据的,但是 request.value 是拿不到数据哦

 

postman 发起 POST 请求,form-data 传数据

image.png

这次就能正常显示返回值啦

 

控制台输出

ImmutableMultiDict([('name', 'poloyy'), ('age', '12')])
ImmutableMultiDict([])
CombinedMultiDict([ImmutableMultiDict([]), ImmutableMultiDict([('name', 'poloyy'), ('age', '12')])])


看源码应该知道,当非 GET 请求的时候传递表单数据,request.values 也能获取得到 request.form 的数据


相关文章
|
5月前
|
JSON 前端开发 数据安全/隐私保护
通过一个form表单的渲染演示,Flask的request,重定向语法
通过一个form表单的渲染演示,Flask的request,重定向语法
48 0
通过一个form表单的渲染演示,Flask的request,重定向语法
|
4月前
|
JSON API 数据格式
如何使用Flask request对象处理请求
在 Flask 中,request对象是处理 HTTP 请求的重要工具之一。它提供了许多属性和方法,可以帮助我们获取请求的相关信息和数据。本文将向你介绍request对象的常用方法以及如何在 Flask 应用程序中使用它。
86 3
|
存储 JavaScript 前端开发
使用 Flask 的g对象和 MySQL 实现用户登录和注销功能
使用 Flask 的g对象和 MySQL 实现用户登录和注销功能
|
编解码 Python
Flask request
Flask request
103 0
Flask request
|
XML JSON 前端开发
Flask request请求对象
Flask request请求对象
|
JSON 数据格式 Python
Flask(7)- request 对象(上)
Flask(7)- request 对象(上)
145 0
Flask(7)- request 对象(上)
|
前端开发 Python
小白学Flask第五天 | 详解很重要的request对象
小白学Flask第五天 | 详解很重要的request对象
192 0
小白学Flask第五天 | 详解很重要的request对象
|
5天前
|
JSON API 数据格式
构建RESTful APIs:使用Python和Flask
【10月更文挑战第12天】本文介绍了如何使用Python和Flask构建一个简单的RESTful API。首先概述了API的重要性及RESTful API的基本概念,接着详细讲解了Flask框架的特性和安装方法。通过创建一个基本的Flask应用,定义了处理“图书”资源的GET、POST、PUT和DELETE方法的路由,展示了如何处理请求和响应,以及如何进行错误处理。最后,提供了运行和测试API的方法,总结了Flask在构建RESTful API方面的优势。
15 1
|
7天前
|
JSON API 数据格式
构建RESTful APIs:使用Python和Flask
【10月更文挑战第10天】本文介绍了如何使用Python和Flask构建一个简单的RESTful API。Flask是一个轻量级的Web应用框架,适合小型项目和微服务。文章从环境准备、创建基本Flask应用、定义资源和路由、请求和响应处理、错误处理等方面进行了详细说明,并提供了代码示例。通过这些步骤,读者可以快速掌握使用Flask构建RESTful API的方法。
22 1
|
15天前
|
数据库 开发者 Python
使用Python和Flask构建Web应用
【10月更文挑战第2天】使用Python和Flask构建Web应用
16 1