点击蓝色字关注我们!

一个正在努力变强的公众号

本文内容:

  1. request的form_data_args用法

  2. 上传文件

request的form、data、args用法

from flask import request

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

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

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

# -*- coding: utf-8 -*-from flask import Flask,requestapp = 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请求

以表单的形式发送:

可以看到我们成功的请求了数据,同时也成功的获取到了表单当中的数据,如果我们不使用这款模拟软件,我们也可以自行去写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)

返回的结果:

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

那么我们再看一种情况

我们如果按照JSON格式的数据发送过去,会是怎样的情况

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

可以看到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)

返回结果:

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

上传文件

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

# -*- coding: utf-8 -*-from flask import Flask,requestapp = 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来进行模拟上传文件。

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

按照图中操作

填写headers:

Key:Content-Type

Value:multipart/form-data

最后在body当中上传

我们运行一下这次的案例

可以看到我们成功上传!

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

# -*- coding: utf-8 -*-from flask import Flask,requestapp = 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)

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


Flask系列文章:

小白学Flask第一天 | 我的第一个Flask程序

小白学Flask第二天| app对象的初始化和配置

小白学Flask第三天| 今天把视图函数的路由给讲清楚!

小白学Flask第四天| 把路由转换器玩的更牛逼

持续更新中...

rest post无法取到request_小白学Flask第五天 | 详解很重要的request对象相关推荐

  1. 【小白学PyTorch】13.EfficientNet详解及PyTorch实现

    <<小白学PyTorch>> 小白学PyTorch | 12 SENet详解及PyTorch实现 小白学PyTorch | 11 MobileNet详解及PyTorch实现 小 ...

  2. 【小白学PyTorch】12.SENet详解及PyTorch实现

    <<小白学PyTorch>> 小白学PyTorch | 11 MobileNet详解及PyTorch实现 小白学PyTorch | 10 pytorch常见运算详解 小白学Py ...

  3. 【小白学PyTorch】11.MobileNet详解及PyTorch实现

    <<小白学PyTorch>> 小白学PyTorch | 10 pytorch常见运算详解 小白学PyTorch | 9 tensor数据结构与存储结构 小白学PyTorch | ...

  4. 3 矩阵运算_小白学PyTorch——pytorch常见运算详解

    公众号关注 "DL-CVer" 设为 "星标",DLCV消息即可送达! 参考目录: 1 矩阵与标量 2 哈达玛积 3 矩阵乘法 4 幂与开方 5 对数运算 6 ...

  5. flask返回json数据到前端_小白学Flask第六天| abort函数、自定义错误方法、视图函数的返回值...

    点击蓝色字关注我们! 一个正在努力变强的公众号 本文内容: 1. abort函数的使用 2. 自定义错误处理方法 3. 设置响应信息的方法 4. 返回json数据的方法 abort函数的使用 abor ...

  6. 小白入门!网络安全基础知识详解(附知识问答)

    小白入门!网络安全基础知识详解(附知识问答) 一.引论 提到网络安全,一般人们将它看作是信息安全的一个分支,信息安全是更加广义的一个概念:防止对知识.事实.数据或能力非授权使用.误用.篡改或拒绝使用所 ...

  7. 深度学企业linux awk命令详解与应用(下篇)

    开篇语: 我们在<一篇速学企业linux awk命令详解与应用(上篇)>中介绍了 awk 的基本用法,其实在awk 脚本程序中,还支持使用一些编程语言,比如变量.数组.分支结构(if-th ...

  8. python爬取图片-Python爬取网页中的图片(搜狗图片)详解

    前言 最近几天,研究了一下一直很好奇的爬虫算法.这里写一下最近几天的点点心得.下面进入正文: 你可能需要的工作环境: Python 3.6官网下载 本地下载 我们这里以sogou作为爬取的对象. 首先 ...

  9. python输入数据爬取_python根据用户需求输入想爬取的内容及页数爬取图片方法详解...

    本次小编向大家介绍的是根据用户的需求输入想爬取的内容及页数. 主要步骤: 1.提示用户输入爬取的内容及页码. 2.根据用户输入,获取网址列表. 3.模拟浏览器向服务器发送请求,获取响应. 4.利用xp ...

最新文章

  1. SQL Server 数据库崩溃后的恢复之法
  2. 腾讯AI Lab刘霁谈机器学习,异步计算和去中心化是两大杀器
  3. windows下常用linux对应工具
  4. 【报告分享】人才流动与迁徙报告2021:新经济,新选择-脉脉.pdf(附下载链接)...
  5. Android应用程序开发以及背后的设计思想深度剖析(2)
  6. QCA9886降低功耗指令
  7. 古董Mac电脑复活最佳工具 macOS Mojave Patcher工具
  8. Fruits 360(水果数据集)
  9. Visual Studio C# Winform应用程序图标修改不了 更改图标不生效,发送桌面快捷方式与图标不一致解决办法
  10. UnitySDK新接入记录
  11. 计算机音乐吧粉刷匠,奥尔夫小班音乐活动:《粉刷匠》
  12. Android后台执行限制
  13. 微信小程序基础库版本与微信版本对应关系
  14. rust 入门笔记: rustlings(推荐一些学习rust语法的一些非常好的小练习)
  15. WEB前端性能优化,提高页面加载速度
  16. matlab 二次不等式约束,请教高手如何用matlab解多元二次不等式的解,有三个未知数x1,x2,x3,约束条件如下:...
  17. 移动硬盘提示需要格式化怎么办?数据可以恢复吗
  18. tomcat的启动过程
  19. IT教育培训机构套路揭秘,这样的学校不能选,擦亮眼睛不上当
  20. wireshark不显示随身wifi热点问题的解决

热门文章

  1. 【AWSL】之Linux管理(RPM)程序
  2. 如何使用AHAS故障演练,实现具备韧性的系统架构?
  3. ACL 2018 收录论文 | 如何高效提炼有效信息?
  4. 知名论坛猴岛游戏论坛宣布永久关闭!
  5. 玩了十年的射击游戏都是有情怀的,大家都是热爱CFHD的一代
  6. JavaWeb课程复习资料(六)——DAO与DAOImpl层封装
  7. SQL基础【十八、事物】(sql事物慎用,还是写业务逻辑代码好一些,入伙涉及到更换数据啥的很麻烦!)
  8. GoldenGate学习笔记(11)_常用参数
  9. 手动安装em(redhat 5/oracle 11g)
  10. 你这么努力为什么还是做不好?