小白学Flask第五天 | 详解很重要的request对象

简介: 小白学Flask第五天 | 详解很重要的request对象

本文内容:


  1. request的form_data_args用法
  2. 上传文件



request的form、data、args用法


from flask import request


就是 Flask 中表示当前请求的 request 对象,request对象中保存了一次HTTP请求的一切信息。


这里给大家准备了一张表格:


image.png


大家看完表格可能也没什么感觉,到底怎么去使用它们呢?



# -*- coding: utf-8 -*-
from flask import Flask,request
app = Flask(__name__)
@app.route("/post", methods=["GET","POST"])
def post():
    name = request.form.get("name")
    age = request.form.get("age")
    return "hello name=%s age=%s" % (name, age)
if __name__ == '__main__':
    app.run(debug=True)


可以看到在post视图函数当中的语句,意思就是获取到表单数据当中的name和age的值。


这里可能就会有些朋友不懂表单数据是什么了,其实学过html的基本上都会下面的这个标签


 <form method="post">
     <input name="name" type="text">
     <input name="age" type="text">
     <input type="submit">
 </form>


上面就是一个表单,也就是需要我们去填写的一个表格,然后把我们填写的内容放入请求体中返回给服务器。


为了给大家演示,我这里采用的是postman软件,这是一款可以模拟多种请求方式的软件,扔给大家一个链接:


https://www.getpostman.com/downloads/


我就用这款软件来模拟post请求


以表单的形式发送:


image.png


可以看到我们成功的请求了数据,同时也成功的获取到了表单当中的数据,如果我们不使用这款模拟软件,我们也可以自行去写form表单进行测试。


这里我们思考一下,如果我们去打印request中的data数据会是什么返回结果?data是指请求体当中的数据,我们来测试看看:


@app.route("/post", methods=["GET","POST"])
def post():
    name = request.form.get("name")
    age = request.form.get("age")
    print(request.data)
    return "hello name=%s age=%s" % (name, age)


返回的结果:


image.png


可以看到返回的结果是空的,这是为什么呢?我们明明post数据到request当中了。其实在这之前我们就已经将请求体当中的数据放到了form字典当中去了,也就是将 name=kuls&age=11 这类的数据转化成类字典的形式了,所以data当中的数据已经不存在了


那么我们再看一种情况



image.png


可以看到这里返回的是空的,为什么?这个时候我们再去控制台看下data当中有么有数据返回



image.png


可以看到data当中是有数据的,这也就说明了,当我们从前端发送的数据如果是表单的数据就可以直接从form里面进行提取,如果不是表单数据那我们无法form中提取东西,我们只能从data当中去提取请求体当中的数据



大家可能看到过底下这种地址:


http://127.0.0.1:5000/post?city=hunan


这种地址称为查询字符串,在request当中也有相关的属性args



@app.route("/post", methods=["GET","POST"])def post():    city = request.args.get("city")    print(request.data)    return "hello city=%s" % (city)


返回结果:


image.png


args的整体思路和form差不多,所以这里不过多阐述



上传文件


上传文件主要用了request当中最后一个属性files


# -*- coding: utf-8 -*-
from flask import Flask,request
app = Flask(__name__)
@app.route("/upload", methods=["GET","POST"])
def upload():
    f = request.files.get("pic")
    if f is None:
        # 没有发送文件
        return "未上传文件"
    # 将文件保存在本地
    # 1.创建一个文件
    f1 = open("./demo.png", "wb")
    # 2.向文件写内容
    data = f.read()
    f1.write(data)
    f1.close()
    return "上传成功"
if __name__ == '__main__':
    app.run(debug=True)


我们运行代码,并且再次使用postman来进行模拟上传文件。


这里简单教大家一下如何来上传



image.png


按照图中操作


填写headers:


Key:Content-Type

Value:multipart/form-data


最后在body当中上传


image.png


可以看到我们成功上传!


其实在这里我们有一个更加简单的写法:


# -*- coding: utf-8 -*-
from flask import Flask,request
app = Flask(__name__)
@app.route("/upload", methods=["GET","POST"])
def upload():
    f = request.files.get("pic")
    if f is None:
        # 没有发送文件
        return "未上传文件"
    # 直接使用上传的文件对象保存
    f.save("./demo1.jpg")
    return "上传成功"
if __name__ == '__main__':
    app.run(debug=True)


直接通过上传的文件对象进行保存即可,效果相同!


相关文章
|
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 对象(下)
136 0
Flask(7)- request 对象(下)
|
JSON 数据格式 Python
Flask(7)- request 对象(上)
Flask(7)- request 对象(上)
145 0
Flask(7)- 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