Flask框架请求钩子与request请求对象用法实例分析

本文实例讲述了Flask框架请求钩子与request请求对象。分享给大家供大家参考,具体如下:

请求钩子

在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如:

  • 在请求开始时,建立数据库连接
  • 在请求开始时,根据需求进行权限校验
  • 在请求结束时,指定数据的交互格式

为了让每个视图函数避免编写重复功能的代码,Flask提供了通用设施的功能,即请求钩子。

请求钩子是通过装饰器的形式实现,Flask支持如下四种请求钩子:

请求钩子 描述
before_first_request 在处理第一个请求前执行
before_request 在处理每一个请求前执行
after_request 如果没有抛出错误,则在每一次请求后执行(接受一个参数:视图函数做出的响应)
teardown_request 在每次请求后执行(接受一个参数:用来接受错误信息)

例:

from flask import Flask
app = Flask(__name__)
# 在第一次请求之前调用,可以在此方法内部做一些初始化操作
@app.before_first_request
def before_first_request():
  print("before_first_request")
# 在每次请求之前调用,这时候已经有请求了,可能在这个方法里面做请求的校验
# 如果请求的校验不成功,可以直接在此方法中进行响应,直接return之后那么就不会执行视图函数
@app.before_request
def before_request():
  print("before_request")
  # if 请求不符合条件:
  #   return "laowang"
# 在执行完视图函数之后会调用,并且会把视图函数所生成的响应传入,可以在此方法中对响应做最后一步统一的处理
@app.after_request
def after_request(response):
  print("after_request")
  response.headers["Content-Type"] = "application/json"
  return response
# 请每一次请求之后都会调用,会接受一个参数,参数是服务器出现的错误信息
@app.teardown_request
def teardown_request(e):
  print("teardown_request")
@app.route('/')
def index():
  return 'index'
if __name__ == '__main__':
  app.run(debug=True)

第一次访问打印结果:

第二次访问打印结果:

request对象

属性 说明 类型
data 记录请求的数据,并转换为字符串 *
form 记录请求中的表单数据 MultiDict
args 记录请求中的查询参数 MultiDict
cookies 记录请求中的cookie信息 Dict
headers 记录请求中的报文头 EnvironHeaders
method 记录请求使用的HTTP方法 GET/POST…
url 记录请求的URL地址 string
files 记录请求上传的文件 *

获取request对象:

例:

request.url # 请求的url地址
request.args.get("password")) # 获取不到,返回none,
request.args.get("password","aaa")) # 获取不到,返回aaa

希望本文所述对大家基于Flask框架的Python程序设计有所帮助。

(0)

相关推荐

  • flask中过滤器的使用详解

    过滤器 过滤器的本质就是函数.有时候我们不仅仅只是需要输出变量的值,我们还需要修改变量的显示,甚至格式化.运算等等,而在模板中是不能直接调用 Python 中的某些方法,那么这就用到了过滤器. 使用方式: 过滤器的使用方式为:变量名 | 过滤器. {{variable | filter_name(*args)}} 如果没有任何参数传给过滤器,则可以把括号省略掉, flask中过滤器支持链式调用 {{variable | filter_name}} 常见内建过滤器 字符串操作 safe:禁用转义 

  • Flask框架路由和视图用法实例分析

    本文实例讲述了Flask框架路由和视图用法.分享给大家供大家参考,具体如下: 创建一个简单flask框架程序 #1.导入Flask类 from flask import Flask #2.创建Flask对象接收一个参数__name__,它会指向程序所在的包 app = Flask(__name__) #3.装饰器的作用是将路由映射到视图函数index @app.route('/') def index(): return 'Hello World' #4.Flask应用程序实例的run方法,启动

  • Flask之请求钩子的实现

    请求钩子 通过装饰器为一个模块添加请求钩子, 对当前模块的请求进行额外的处理. 比如权限验证. 说白了,就是在执行视图函数前后你可以进行一些处理,Flask使用装饰器为我们提供了注册通用函数的功能. 1.before_first_request:在处理第一个请求前执行 before_first_request 在对应用程序实例的第一个请求之前注册要运行的函数, 只会执行一次 #: A lists of functions that should be called at the beginnin

  • flask 实现token机制的示例代码

    token 的生成 用token校验身份,是前后端交互的常用方式. 它有以下特性: 会失效 加密 可以根据它拿到用户的信息 生成方式( 内部配置的私钥+有效期+用户的id ) #导入依赖包 from flask import request,jsonify,current_app from itsdangerous import TimedJSONWebSignatureSerializer as Serializer def create_token(api_user): ''' 生成toke

  • Flask核心机制之上下文源码剖析

    一.前言 了解过flask的python开发者想必都知道flask中核心机制莫过于上下文管理,当然学习flask如果不了解其中的处理流程,可能在很多问题上不能得到解决,当然我在写本篇文章之前也看到了很多博文有关于对flask上下文管理的剖析都非常到位,当然为了学习flask我也把对flask上下文理解写下来供自己参考,也希望对其他人有所帮助. 二.知识储备 threadlocal 在多线程中,线程间的数据是共享的, 但是每个线程想要有自己的数据该怎么实现? python中的threading.l

  • flask框架自定义过滤器示例【markdown文件读取和展示功能】

    本文实例讲述了flask框架自定义过滤器.分享给大家供大家参考,具体如下: 除了一些内置的join length safe等过滤器外, flask还提供了自定义过滤器的功能. 一. 自定义一个mardown过滤器 自定义一个markdown过滤器, 使过滤器可以像safe解析html标签一样解析md语法. 安装库 pip install Markdown==2.3.1 自定义过滤器 使用@app.template_filter('md')过滤器, 此时便拥有了名为md的过滤器. @app.tem

  • Flask框架钩子函数功能与用法分析

    本文实例讲述了Flask框架钩子函数功能与用法.分享给大家供大家参考,具体如下: 在Flask中钩子函数是使用特定的装饰器的函数.为什么叫做钩子函数呢,是因为钩子函数可以在正常执行的代码中,插入一段自己想要执行的代码,那么这种函数就叫做钩子函数. before_first_request:Flask项目第一次部署后会执行的钩子函数. before_request:请求已经到达了Flask,但是还没有进入到具体的视图函数之前调用.一般这个就是在函数之前,我们可以把一些后面需要用到的数据先处理好,方

  • python框架flask表单实现详解

    这篇文章主要介绍了python框架flask表单实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 表单 表单用于注册,修改用户数据等场景. flask-wtf提供了一个包,可以创建表单:pip install flask-wtf 为了防止跨域请求,flask_wtf自己生成一个秘钥,用秘钥生成加密口令,然后用口令验证表单中的数据真伪(是否被篡改过) from flask import Flask from flask import req

  • Flask框架中request、请求钩子、上下文用法分析

    本文实例讲述了Flask框架中request.请求钩子.上下文用法.分享给大家供大家参考,具体如下: request 就是flask中代表当前请求的request对象: 常用的属性如下: 属性 说明 类型 data 记录请求的数据,并转换为字符串 * form 记录请求中的表单数据 MultiDict args 记录请求中的查询参数 MultiDict cookies 记录请求中的cookie信息 Dict headers 记录请求中的报文头 EnvironHeaders method 记录请求

  • Flask框架请求钩子与request请求对象用法实例分析

    本文实例讲述了Flask框架请求钩子与request请求对象.分享给大家供大家参考,具体如下: 请求钩子 在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如: 在请求开始时,建立数据库连接 在请求开始时,根据需求进行权限校验 在请求结束时,指定数据的交互格式 为了让每个视图函数避免编写重复功能的代码,Flask提供了通用设施的功能,即请求钩子. 请求钩子是通过装饰器的形式实现,Flask支持如下四种请求钩子: 请求钩子 描述 before_first_request 在处理第一个

  • Django框架HttpRequest对象用法实例分析

    本文实例讲述了Django框架HttpRequest对象用法.分享给大家供大家参考,具体如下: 1.URL路径参数 (1)位置参数:使用正则分组,与视图中的参数一一对应,不可换位置 例: url(r'^(\d+)/(\d+)/$', views.index) def index(request, 参数1, 参数2): ... (2)关键字参数:参数位置可以变,与关键字保持一致即可 例: url(r'^(?P<value1>\d+)/(?P<value2>\d+)/$', views

  • Flask框架响应、调度方法和蓝图操作实例分析

    本文实例讲述了Flask框架响应.调度方法和蓝图操作.分享给大家供大家参考,具体如下: 响应 像现在大部分的互联网应用用的数据传输格式都是JSON,当用户访问一个URL,我们如何通过Flask返回JSON的响应: 普通做法: @app.route("/") def showInfo(): return jsonify({"name":"老王","age":18}) 当我们的应用有大量的URL时,我们需要每次都用jsonify转

  • Django框架HttpResponse对象用法实例分析

    本文实例讲述了Django框架HttpResponse对象用法.分享给大家供大家参考,具体如下: 1.HttpResponse 可通过HttpResponse构造响应对象: HttpResponse(content=响应体, content_type=响应体数据类型, status=状态码) 响应头可以直接将HttpResponse对象当做字典进行响应头键值对的设置: response = HttpResponse() response['itcast'] = 'Python' # 自定义响应头

  • java中response对象用法实例分析

    本文实例讲述了java中response对象用法.分享给大家供大家参考,具体如下: <jsp:forward>动作元素用于运行时在服务器端结束当前页面的执行,并从当前页面转向指定页面. 使用response对象的setHeader()方法可以设置页面的自动刷新时间间隔.实现每隔60秒重新加载本页面的语句为: 复制代码 代码如下: response.setHeader("refresh",60); 而实现3秒后浏览器加载新页面http://www.jb51.net的语句为:

  • javascript中cookie对象用法实例分析

    本文实例讲述了javascript中cookie对象用法.分享给大家供大家参考.具体如下: 属性 name          唯一必须设置的属性,表示cookie的名称 expires       指定cookie的存活周期,如不设置,浏览器关闭自动失效 path           决定cookie对于服务器对于其他网页的可用性,一般情况下,   cookie对同一目录下的所有页面都可用,当设置path属性后,cookie只对指定路径及子路径下的所有网页有效 domain           

  • python编程进阶之类和对象用法实例分析

    本文实例讲述了python类和对象用法.分享给大家供大家参考,具体如下: 前面我们都是用python面向过程编程,现在来用python创建类和对象,面向对象编程.类和对象是面向对象编程的两个主要方面.类创建一个新类型,而对象这个类的 实例 .这类似于你有一个int类型的变量,这存储整数的变量是int类的实例(对象).在python中,类和实例中的变量称为域,类和实例中的函数称为方法,域和方法都是类和实例的属性. 类的定义 在定义类或者它的函数的时候,如果没有参数的话,需要把参数写为self,这样

  • Laravel5.1 框架Request请求操作常见用法实例分析

    本文实例讲述了Laravel5.1 框架Request请求操作常见用法.分享给大家供大家参考,具体如下: 这篇主要说说Request 每当用户访问我们的网站功能时都会用到它 我们可以使用Request中的一些数据来做出适当的相应. 1 常用的属性和方法 我们可以从Request中取到一些重要属性来做一些逻辑处理,下面是Request中常用的属性: 1.1 获取用户输入 (前提工作 创建一个RESTful风格的控制器 并声明路由),Request可以获取到用户输入的数据 我们来看看 1.1.1 i

  • Flask框架Flask-Principal基本用法实例分析

    本文实例讲述了Flask框架Flask-Principal基本用法.分享给大家供大家参考,具体如下: Flask-Principal是Flask框架的一个扩展,主要主件是Identity,Needs,Permission和IdentityContext. Identity:代表用户,从各个位置存储和加载每个请求,包含用户拥有的访问权限. Needs:需求是访问控制的最小粒度,代表了这种情况的具体参数.例如:管理用户.可以编辑帖子. Permission:权限 IdentityContext:针对

  • Flask框架信号用法实例分析

    本文实例讲述了Flask框架信号用法.分享给大家供大家参考,具体如下: 项目功能复杂,代码量越大,就越需要做业务解耦.否则在其之上做开发和维护是很痛苦的,尤其是对于团队的新人.Flask从0.6开始,通过Blinker提供了信号支持.信号就是在框架核心功能或者一些Flask扩展发生工作时所发送的通知,用于帮助你解耦应用. Blinker的使用 安装 pip install blinker Blinker的信号与接收方式 from blinker import signal s = signal(

随机推荐