前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >request对象(请求对象)

request对象(请求对象)

作者头像
星哥玩云
发布2022-09-14 18:48:42
发布2022-09-14 18:48:42
1.1K00
代码可运行
举报
文章被收录于专栏:开源部署开源部署
运行总次数:0
代码可运行

一、作用

获取请求报文中传递的数据

二、概述

  • 浏览器发送到服务器的所有报文被flask接收后,创建出request对象,request被用在视图函数中,获取请求的数据
  • request对象由flask框架创建好,通过引入后就可以在视图中使用
  • 导入 from flask import request

三、request属性

  • url 完整的请求URL
  • base_url 去掉GET参数的URL
  • url_root 去掉了?后面的参数
  • host_url 只有主机IP和端口号的URL地址
  • host 返回主机和端口
  • path 装饰器中写的路由地址
  • full_path 去掉了ip和端口剩下的完整的url
  • method 请求方法的类型
  • remote_addr 请求客户端的IP地址
  • remote_user 请求客户端的用户名
  • args 存储GET方法请求的数据
  • view_args 提取url中的部分值传递给视图的参数
  • form 存储POST方法请求的数据
  • files 用于文件上传
  • headers 存储所有到请求头信息
  • cookies 存储请求的Cookiec
  • json 获取传递过来的json数据
  • cookies 存储所有请求的cookie

示例

请求网址:http://127.0.0.1:8000/req/?a=1&b=2&c=3

代码语言:javascript
代码运行次数:0
运行
复制
<span class="hljs-keyword">from</span> flask <span class="hljs-keyword">import</span> request
<span class="hljs-meta">@app.route('/req/')</span>
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">req</span><span class="hljs-params">()</span>:</span>
    <span class="hljs-comment"># 完整的请求URL</span>
    <span class="hljs-comment"># return request.url</span>
    <span class="hljs-comment"># 基本路由地址,不包括get参数</span>
    <span class="hljs-comment"># return request.base_url</span>
    <span class="hljs-comment"># 只有主机和端口号</span>
    <span class="hljs-comment"># return request.host_url</span>
    <span class="hljs-comment"># 只包含装饰器中的路由地址</span>
    <span class="hljs-comment"># return request.path</span>
    <span class="hljs-comment"># 去掉了ip和端口剩下的完整的url</span>
    <span class="hljs-comment"># return request.full_path</span>
    <span class="hljs-comment"># 请求方法类型</span>
    <span class="hljs-comment"># return request.method</span>
    <span class="hljs-comment"># 客户端的IP</span>
    <span class="hljs-comment"># return request.remote_addr</span>
    <span class="hljs-comment"># 获取GET参数</span>
    <span class="hljs-comment"># return request.args</span>
    <span class="hljs-comment"># 提取url中的部分值传递给视图的参数</span>
    <span class="hljs-comment"># return request.view_args</span>
    <span class="hljs-comment"># 存储所有请求的cookie</span>
    <span class="hljs-comment"># return request.cookies</span>
    <span class="hljs-comment"># 获取请求头信息</span>
    <span class="hljs-keyword">return</span> request.headers[<span class="hljs-string">'User-Agent'</span>]

四、ImmutableMultiDict 类型对象

  • 概述 request对象中的args、form、files属性都是该类型的对象 是类似字典的对象,与python中的字典的区别在于该类型的对象用来处理一个键拥有多个值的情况
  • 方法
    • get() 根据键获取值 只能获取键的一个值 注意:如果一个键有多个值,获取第一个值
    • getlist() 将键的值以列表的形式返回

五、获取GET 与 POST传参

get 传参使用

url:http://127.0.0.1:5000/args/?a=1&b=2&c=3&c=4

代码语言:javascript
代码运行次数:0
运行
复制
<span class="hljs-meta">@myApp.route("/args/")</span>
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">args</span><span class="hljs-params">()</span>:</span>
    a = request.args.get(<span class="hljs-string">"a"</span>)
    b = request.args.get(<span class="hljs-string">"b"</span>)
    clist = request.args.getlist(<span class="hljs-string">"c"</span>)
    print(a, b, clist)
    <span class="hljs-keyword">return</span> <span class="hljs-string">"获取到了get参数"</span>

获取POST传参

test_post.html

代码语言:javascript
代码运行次数:0
运行
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/post/" method="POST">
    <p>用户名:<input type="text" name="username" placeholder="输入用户名"></p>
    <p>年龄:<input type="text" name="age" placeholder="输入年龄"></p>
    <p><input type="submit" value="提交"></p>
</form>
</body>
</html>

视图函数

代码语言:javascript
代码运行次数:0
运行
复制
<span class="hljs-meta">@myApp.route("/post/", methods=["POST", "GET"])</span>
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">test_post</span><span class="hljs-params">()</span>:</span>
   <span class="hljs-keyword">if</span> request.method == <span class="hljs-string">'POST'</span>
      username = request.form.get(<span class="hljs-string">"username"</span>)
      age = request.form.get(<span class="hljs-string">"age"</span>)
      print(username, age)
      <span class="hljs-keyword">return</span> username, age
    <span class="hljs-keyword">else</span>:
    	<span class="hljs-keyword">return</span> render_template(<span class="hljs-string">'test_post.html'</span>)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、作用
  • 二、概述
  • 三、request属性
  • 四、ImmutableMultiDict 类型对象
  • 五、获取GET 与 POST传参
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档