996技术站 - 活在未来 | KingSun966技术站,极客带你看世界!https://www.996station.com程序员开发指南Descriptionhttps://guide.996station.com

请求勾子

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

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

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

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

  • before_first_request

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

代码测试

from flask import Flask
from flask import abortapp = 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)
  • 在第1次请求时的打印:
before_first_request
before_request
after_request
teardown_request
  • 在第2次请求时的打印:
before_request
after_request
teardown_request

Python Flask简介请求勾子相关推荐

  1. python -flask简介

    __name__ __name__ 表示当前模块的名称 如果__name__ 在运行模块中,显示为__main__ 如果作为模块被导入,则为模块名称 执行文件时输出__main__ 被当做模块引入输出 ...

  2. flask ajax 文件上传,使用ajax上传Python flask文件请求.files空的

    我正在尝试上传一个大约1.62MB的图像到一个使用flask编写的端点.这个请求.files对象始终为空.我已经检查了以下问题,但没有运气: 这是我的服务器:from flask import Fla ...

  3. python Flask框架如何请求及返回数据——flask详细教程

    python Flask框架如何请求及返回数据--flask详细教程 文章目录: 1 Flask介绍 1.1 Flask简单介绍 1.2 Flask相关资料信息 2 Flask快速入门 2.1 Fla ...

  4. python flask源码解析_浅谈flask源码之请求过程

    Flask Flask是什么? Flask是一个使用 Python 编写的轻量级 Web 应用框架, 让我们可以使用Python语言快速搭建Web服务, Flask也被称为 "microfr ...

  5. Python Flask No.1_简介

    Python Flask No.1_简介 1.什么是Flask Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jin ...

  6. Python Flask Web教程001:Flask 简介

    Flask Web教程001:Flask 简介 0. 前言 1. flask简介 2. flask的优势 3. 总结 0. 前言 本系列教程从Flask框架的基础知识开始,逐渐深入到使用flask进行 ...

  7. 微信小程序post请求Python Flask数据

    1.微信小程序端: (1)index.js //index.js //获取应用实例 const app = getApp()Page({data: {motto: '检测结果:',value: '0' ...

  8. flask基础五之异常捕获和请求勾子

    异常捕获 HTTP 异常主动抛出 abort 方法 抛出一个给定状态代码的 HTTPException 或者 指定响应,例如想要用一个页面未找到异常来终止请求,你可以调用 abort(404). 参数 ...

  9. python flask跨域_Flask框架踩坑之ajax跨域请求实现

    Python flask ajax 请夜影驱动编程小编今天和大家分享后端并且能获得数据,但是...@app.route('/search',methods=[ 'POST']) def search( ...

最新文章

  1. java什么是成员域成员方法,java多态中的成员绑定
  2. C#/Net代码精简优化技巧(3)
  3. 开机f8修复电脑步骤_知识 | 8种方法修复电脑无法开机问题
  4. java泛型程序设计——通配符类型+通配符的超类型限定
  5. http发送16进制报文_图解HTTP 第三章HTTP报文内的HTTP信息
  6. PLL与PHY的连接:通道绑定或者不绑定
  7. IKM 线上测试JavaScript
  8. 初识C语言学习笔记 入门
  9. 【机器学习】机器学习基石-林轩田-1-机器学习介绍
  10. Halcon教程系列/启蒙----(1)初识Halcon
  11. 英语名词复数s的发音规则
  12. 维语翻译_维语翻译中文转换器_维汉翻译通软件app下载安装
  13. 软著申请需要多少钱?大概需要多久?
  14. Cadence: 各软件业务
  15. 计算机常用的颜色模式有,ps的颜色模式有哪些
  16. 关于跳跃连接 卷积网络
  17. 站在数字经济浪尖:360视觉云探路中小微企业数智转型
  18. python实时播放音频和录音_python实现播放音频和录音功能示例代码
  19. “此苹果非彼苹果”看意图识别的那些事儿
  20. 记网站部署中一个奇葩BUG

热门文章

  1. 别再用 hao123 360等垃圾导航了,这款主页插件让你浏览器首页高效简洁,高清好看
  2. Windows7 U盾无法使用解决方法(农行、建行、工行、光大、广发、交行)
  3. 京东金融客户端用户触达方式的精细化探索与实践
  4. JavaScript精粹
  5. 2023年跨境电商行业研究报告
  6. 基于matlab的蓝色车牌识别(绪论)
  7. 数据分析——泰坦尼克号预测
  8. 权限管理——RBAC模型总结
  9. 哈啰出行,为城市续航!
  10. [网络安全学习篇58]:PHP代码注入