Request对象

来自客户端网页的数据作为全局请求对象发送到服务器。为了处理请求数据,应该从Flask模块导入。

请求方式

Flask默认是GET请求

如果我们在一个页面中即需要GET请求又需要POST请求那么我们需要重写methods方法:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<form action="" method="post" >用户名:<input type="text" name="username">密码:<input type="password" name = "password"><input type="submit" value="登录">
</form>
</body>
</html>
from flask import Flask,render_template
app = Flask(__name__)@app.route('/login',methods=["POST","GET"])  # 重写methods方法
def login():return render_template("login.html")if __name__ == '__main__':app.run(debug=True)

相关属性

  • 导入request对象:from flask import Flask,render_template,request

method属性

method 属性里面保存的就是前端的请求的方式

from flask import Flask,render_template,request
app = Flask(__name__)@app.route('/login',methods=["POST","GET"])
def login():# 获取前端的请求的方式print(request.method)return render_template("login.html")if __name__ == '__main__':app.run(debug=True)

form属性

  • form 属性:ImmutableMultiDict, ImmutableMultiDict类型的数据和我们python中的字典用法是一样的

  • 我们可以通过to_dict()方法将上面的这种数据类型转换成我们python中的字典,如下所示

from flask import Flask, render_template, requestapp = Flask(__name__)@app.route('/login', methods=["POST", "GET"])  # 重写methods方法
def login():if request.method == "GET":return render_template("login.html")if request.method == "POST":# 获取form表单提交的数据print(request.form)  # ImmutableMultiDict([('username', 'admin'), ('password', '123456')])# 转成字典print(request.form.to_dict())  # {'username': 'admin', 'password': '123456'}username = request.form.get("username")password = request.form.get("password")return "200 ok"if __name__ == '__main__':app.run(debug=True)

headers属性

Host: 127.0.0.1:5000
Connection: keep-alive
Content-Length: 25
Cache-Control: max-age=0
Sec-Ch-Ua: "Chromium";v="92", " Not A;Brand";v="99", "Google Chrome";v="92"
Sec-Ch-Ua-Mobile: ?0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36
Origin: http://127.0.0.1:5000
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: http://127.0.0.1:5000/login
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: cna=i3FDGV3rkjQCAXcnYCvqZ4o6; _bl_uid=j5k8hpyek1gw1brXh6nqn06kbF7z; isg=BAYG7fk3mq3DjE7JoxTHx7EkV_yIZ0ohZY5Gu_Av8ikE86YNWPeaMewCzy8_4EI5; csrftoken=2w1GOPll6H10LD2xnkZBvOmb8W7JlY1bxkYsXYBfr6IRHjCt0mcGgd4arRteFCme

args属性

  • 获取GET请求中的url参数, 就是url中?后面的键值对
  • url:http://127.0.0.1:5000/login?username=admin&password=123456
 print(request.args)# ImmutableMultiDict([('username', 'admin'), ('password', '123456')])# 通过to_dict()方法转换成字典print(request.args.to_dict())

files属性

  • 上传文件相关
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">用户名:<input type="text" name="username">密码:<input type="password" name="password"><input type="file" name="my_file"><input type="submit" value="登录">
</form>
</body>
</html>
from flask import Flask, render_template, requestapp = Flask(__name__)@app.route('/login', methods=["POST", "GET"])
def login():if request.method == "GET":return render_template("login.html")if request.method == "POST":print(request.files)  # ImmutableMultiDict([('my_file', <FileStorage: '卡特兰数.png' ('image/png')>)])files = request.files.get("my_file")  # files是FileStorage类型print(files.filename)  # 【文件名字】# fp = os.path.join("static",files.filename)  # 通过os模块指定保存路径files.save(files.filename)  # FileStorage类型调用save方法保存return "200 ok"else:return "404"if __name__ == '__main__':app.run(debug=True)

其他属性

print(request.url) # 获取访问全路径
print(request.path) # 路由地址 /login
print(request.values) # 可以获取URL中的参数 也可以获取 FormData中的数据
print(request.cookies)#保存Cookie名称和值的字典对象。
print(request.environ) # 获取请求原始信息
print(request.base_url) # 获取URL头,不包含参数
print(request.json) # 请求头中 Content-type:application/json 数据序列化 request.json
print(request.data) # 请求头中 Content-type 不包含 Form or data

Flask Request对象相关推荐

  1. Flask框架(flask中的request对象,获取请求参数,保存上传的文件)

    1.request中包含了前端发送过来的所有数据 ,请求的 request 对象中保存了一次HTTP请求的一切信息. 通过request.from可以直接发送提取请求体中的表单格式数据,是一个类字典的 ...

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

    点击蓝色字关注我们! 一个正在努力变强的公众号 本文内容: request的form_data_args用法 上传文件 request的form.data.args用法 from flask impo ...

  3. python:Flask中request对象的简单用法

    因为在工作中需要将写好的Python程序改写成API接口供其他部门使用,所以这篇博客重点利用Flask的请求对象完成数据传输,对于更深层次的理论方面的内容,以后再补充: 本文只涉及本地服务器,再远程服 ...

  4. Flask request 属性详解

    一.关于request 在Flask的官方文档中是这样介绍request的:对于 Web 应用,与客户端发送给服务器的数据交互至关重要.在 Flask 中由全局的 request 对象来提供这些信息. ...

  5. Django Request对象3.3

    HttpReqeust对象 服务器接收到http协议的请求后,会根据报文创建HttpRequest对象 视图函数的第一个参数是HttpRequest对象 在django.http模块中定义了HttpR ...

  6. request 对象和 response 对象

    Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象 HttpServletResponse HttpServletR ...

  7. Request对象 --web浏览器向web服务端的请求

    参考文档:http://blog.csdn.net/u012986057/article/details/50570325 一]Request对象常用方法         1)StringBuffer ...

  8. eclipse在网页进入时显示重定向过多_使用eclipse快速开发jsp以及编码问题、jsp页面元素、request对象学习的粗略记录...

    人老了真是什么都会忘记啊orz,早上发现学过去的东西好多都还没记录复盘... ...(懒虫作祟) 在开始之前,俺认为还是很有必要了解一下jsp的执行流程,俺发现CSDN上的"陈小哥cw&qu ...

  9. django之视图系统 views.py--主要内容(FBV和CBV、dispath、request对象和request.FILES、JsonResponse)...

    django之视图系统 views.py-->主要内容(FBV和CBV.dispath.request对象和request.FILES.JsonResponse) 一个视图函数(类),简称视图, ...

  10. webservice服务器端获取request对象的三种方式

    有的时候在webservice里我们需要获取request对象和response对象,比如想要获得客户端的访问ip的时候就需要这么做,下面说三种方式,当然三种方式可能是针对不同方式部署webservi ...

最新文章

  1. mysql function使用
  2. (译)用多重赋值和元组解包提高python代码的可读性
  3. 修改 PhpStorm 的字体和样式
  4. 大剑无锋之delete、drop、truncate【面试推荐】
  5. Unity 检测物体是否在相机视野范围内
  6. 下拉框数据绑定两种方式
  7. 21 年前濒临倒闭的苹果是如何做到今天万亿市值的?
  8. ERROR org.hibernate.hql.internal.ast.ErrorCounter unexpected token: form 异常解决
  9. Oracle oci.dll 下载地址
  10. 计算机硬盘使用率,硬盘占用率和速度
  11. 看!Mac上好用的流程图软件就是它
  12. svn拉取文件失败_TortoiseSVN常见的错误信息与解决方法
  13. android 点击提示音,Android 下实现------蜂鸣提示音和震动
  14. mysql order优化2019_MySQL 效率提高N倍的19条MySQL优化秘籍
  15. php jwt payload,php实现JWT(json web token)鉴权实例详解
  16. Git分支 合并 暂时储藏分支 标签 链接多个仓库
  17. lempel ziv matlab,使用Lempel-Ziv压缩
  18. 最全移动端UI设计规范,作为前端的你,了解多少?
  19. 瑞星微RK3288 开发板(ARM Cortex-A17架构)
  20. 用OpenStack搭建简单的云平台并启动云主机

热门文章

  1. Git分支图解理解其概念HEAD,git branch name,git checkout name,git log --oneline --decorate
  2. php视频边下边播,PHP + NGINX 控制视频文件播放,并防止文件下载
  3. CIE 国际照明委员会
  4. java 事件冷却,基于“牛顿冷却定律”的机器学习算法
  5. hive支持update、delete
  6. 【横向移动】内网渗透之内网信息收集
  7. 初学Mean Shift 聚类算法
  8. Oracle并集union和union all
  9. DGL笔记1——用DGL表示图
  10. LT.852二分法查找指定数字,绝对值最小的数