什么是请求勾子?

为了让每个视图函数避免编写重复的功能代码,flask提供了通用设施的功能,就是所谓的勾子

那么请求勾子就是,在浏览器请求服务器资源的前后挂载相关的处理函数

请求勾子有什么作用?

作用:在浏览器请求服务器资源的前后挂载相关的处理函数

比如:1、浏览器请求资源之前,根据需求进行权限校验

   2、请求结束之后,处理数据的交互格式......

如何使用请求勾子?

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

  • before_first_request
    在处理第一个请求前执行
  • before_request
    在每次请求前执行
    如果在某修饰的函数中返回了一个相应,视图函数将不再被调用
  • after_request
    如果没有抛出错误,在每次请求后执行
    接收一个参数:视图函数做出的响应,
    在此函数中可以 对响应的值在返回之前做最后的一步修改处理
    需要将参数中的响应在此参数中进行返回
  • teardown_request
    在每次请求后执行
    接收一个参数:错误信息,如果有相关错误抛

总结:请求勾子类似于装饰器,可以在不修改函数内部的逻辑前提下增加逻辑.

from flask import Flask
app = Flask(__name__) class Config(object):
DEBUG = True app.config.from_object(Config) @app.before_first_request
def before_first_request():
"""第一次请求视图函数时才会调用"""
print("before_first_request") @app.before_request
def before_request():
"""每次请求视图函数之前会调用此函数"""
print("before_request") @app.after_request
def after_request(response):
"""在请求之后会调用,并且在函数里会接受一个参数:响应,并且还要将响应返回"""
print("after_request")
print(response)
# response可以得到视图函数返回的相关响应数据:<Response 14 bytes [200 OK]>
# 在此函数中可以对响应的数据做统一的处理
return response @app.teardown_request
def teardown_request(error):
"""在请求之后会执行,如果请求的函数有异常,会把具体的异常传递到此函数"""
print("teardown_request") @app.route('/')
def hello_world():
return 'Hello World!!!' if __name__ == '__main__':
app.run()

Flask基础(09)-->请求勾子函数的更多相关文章

  1. (三)flask中的请求钩子函数

    请求勾子 在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如: 在请求开始时,建立数据库连接: 在请求开始时,根据需求进行权限校验: 在请求结束时,指定数据的交互格式: 为了让每个视图 ...

  2. flask基础之请求钩子(十二)

    前言 什么是请求钩子?在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要统一处理,为了让每个视图函数避免编写重复功能的代码,flask提供了统一的接口可以添加这些处理函数,即请求钩子. 请求钩子 ...

  3. flask 文件下载 文件服务器 请求参数 函数修饰符

    180M电子书 通过已经下载到pc,在上传到私有公网服务器,之后,再异地下载 以下代码,文件内容错乱 [root@bigdata-server- mydataweb]# tree . ├── mydl ...

  4. Flask基础(12)-->请求上下文和应用上下文

    请求上下文和应用上下文 请求上下文:可以简单理解为客户端与服务器之间数据交互请求的容器 请求上下文对象有:request.Session request:封装了HTTP请求的内容,针对的是http的请 ...

  5. 测开之路三十一:Flask基础之请求与相应

    from flask import requestrequest.pathrequest.methodrequest.formrequest.argsrequest.values 一般用form获取p ...

  6. flask中请求勾子

    请求勾子 在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如: *在请求开始时,建立数据库连接; *在请求开始时,根据需求进行权限校验; *在请求结束时,指定数据的交互格式; 为了让每 ...

  7. flask基础之AppContext应用上下文和RequestContext请求上下文(六)

    前言 应用上下文和请求上下文存在的目的,官方文档讲的很清楚,可参考: http://www.pythondoc.com/flask/appcontext.html 应用上下文对象在没有请求的时候是可以 ...

  8. 第二篇 Flask基础篇之(闪现,蓝图,请求扩展,中间件)

    本篇主要内容: 闪现 请求扩展 中间件 蓝图 写装饰器,常用 functools模块,帮助设置函数的元信息 import functools def wrapper(func): @functools ...

  9. Flask——基础知识

    Flask应用程序 一个简单的Flask应用程序 # 导入flask程序 from flask import Flask # 初始化flask对象 app = Flask(__name__) # 装饰 ...

随机推荐

  1. 在.net core web项目中生成图片验证码

    第1步:添加SkiaSharp包引用 Install-Package SkiaSharp 第2步:编写生成图片验证码的代码 using SkiaSharp; //在类文件头部添加引用 public I ...

  2. Linux的基本操作(一)

    一.Linux的常用命令 1.ls[参数] 目录或文件 参数 -a :显示指定目录下的所有子目录与文件,包括隐藏文件: -l 以长格式显示文件的详细信息 如图: 文件类型:“-“表示常规文件:”d&q ...

  3. POJ-1860 Currency Exchange( Bellman_Ford, 正环 )

    题目链接:http://poj.org/problem?id=1860 Description Several currency exchange points are working in our ...

  4. hdu 5903 Square Distance(dp)

    Problem Description A string is called a square string if it can be obtained by concatenating two co ...

  5. yzoj1568: 数字组合 题解

    题意 从n个数中选出和为m的组合个数(输入顺序不同的数是不同的) 输入样例: 4 4 1 1 2 2 输出样例 3 我们把每个数看作一件物品,它的重量就是它的值,价值就是1,而和m即为背包的容积,故背 ...

  6. linux中启动Zookeeper

    1.先把zookeeper的安装包解压在/usr/local,如下: 2.进入zookeeper目录,创建一个data目录 3.进入同级conf目录下,里面有zoo_sample.cfg,修改该文件名 ...

  7. maven:Fatal error compiling: 无效的目标发行版: 1.8.0_45 -> [Help 1]

    使用mvn clean install命令的时候出现如下的错误: Failed to execute goal org.apache.maven.plugins:maven-compiler-plug ...

  8. 一个例子明白 javascript 中 for 与 for in 的区别

    var arr = new Array(); arr["a"] = "aa"; arr["b"] = "bb"; arr ...

  9. Winform中将Bitmap对象通过picture显示图片

    场景 使用Zxing生成二维码时,返回的是Bitmap,现在要将其显示. Winform中显示照片的控件是pictureBox 实现 //二维码要存储的内容 string codeString = & ...

  10. 用button 属性来保存字符串地址

    我用到for循环创建button  通过点击不同的按钮拿到每个button对应的链接地址,因为button的个数也是通过后台数据返回.上代码: //保存到数组 _array = [Article mj ...