首页 > 其他分享 >flask请求钩子(就是django的中间件)

flask请求钩子(就是django的中间件)

时间:2023-10-04 12:24:08浏览次数:25  
标签:__ 请求 flask 中间件 app request django response

flask中的请求钩子就是域django的中间件类似,作用都是用于在请求前、后、响应前、后进行一些hook操作。

请求钩子装饰器

@app.before_request
  # 请求前会调用,一般可以用来做权限校验。
  
@app.brefore_first_request
  # 只在第一次请求的时候调用,可以做一些init初始化的动作。
  
@app.after_request
  # 请求后调用,也就是准备响应给客户端前
  # 要求被装饰的函数参数必须要有一个response接收,且函数必须返回response
  
@app.teardown_request
  # 执行视图函数后都会调用,无论是否发生异常。
  # 被装饰的函数必须要有一个error参数接收异常。

实例:

from flask import Flask

app = Flask(__name__)

"""
flask可以使用请求钩子对请求前、请求后(响应前)等进行hook处理。
"""


@app.before_request  # 这个和django的中间件的process_request是一样的
def process_request():
    # 这里在这里做权限校验
    print("请求前....")

@app.after_request  # 在执行完视图函数后会执行。
**# 必须接收一个response,然后必须返回response**
def after_request(response):
    print("响应前。。。")
    **return response**

@app.teardown_request
def teardown**(error):**
    """
    作用:拦截异常,做异常处理。
    # error有值就是有异常发生,没有值就是没有异常发生
    :param error:
    :return:
    """
    print("teardown_request")

@app.route('/demo1')
def demo1():
    print("demo1....")
    return "demo1"


if __name__ == '__main__':
    app.run(debug=True)

使用场景

  • 一般后期会配合g对象使用,进行一些用户登录校验的操作。g对象后面笔记会写。

标签:__,请求,flask,中间件,app,request,django,response
From: https://www.cnblogs.com/juelian/p/17742125.html

相关文章

  • flask统一异常捕获(作用:统一捕获指定的异常并返回)
    flask中可以使用装饰器errorhandler来对指定的异常、状态码等统一捕获并处理。对指定的状态码进行统一捕获@app.errorhandler(404)#参数e是异常的详细信息的对象,必须要有一个参数接收异常对象。defpagenotfound(e):#比如可以重定向到统一的404静态页面中。#不过......
  • flask自带的异常抛出函数abort
    flask中有一个abort函数,可以用于快捷的抛出异常,但是只能抛出标准的HTTP状态码,不能乱设置HTPP状态码,比如666、777这种。[email protected]("/user")defuser():abort(404)......
  • flask应用程序配置
    flask中配置app的配置有几种方式,不同的场景适合用不同的方式。配置定义方式如下:(注意:这几种方式都时可以混用的)直接调用app.config来设置。app.config["SECRET_KEY"]="sjhiq1y198798su656s#$#$%"从类对象中加载配置文件(优先级高于app.config直接设置)app.config.from_ob......
  • flask蓝图(这玩意就是django的子应用)
    蓝图的概念类似django的子应用,作用就是分模块开发,有关联的都放在一起。蓝图的创建步骤:新建一个包(一个包就是一个模块、等同于一个子应用)在包的__init__.py中创建蓝图对象。蓝图对象所有的参数和功能与Flask()对象类似。见:user下的__init__.py和views.py在app中注册蓝......
  • flask上下文、g变量、current_app
    在flask中的上下文分为两种:请求上下文(requestcontext)也就是和请求相关的上下文,记录一些请求相关的数据。包含:1、request请求对象2、session会话应用上下文(appcontext)记录一些和flask的应用(app=Flask(name))的上下文数据,主要包含:**1、current_app**在项目其它......
  • django集成celery
    参考:https://docs.celeryq.dev/en/stable/django/first-steps-with-django.html#django-first-steps这里只记录一些要注意的地方1、celery主文件importosfromceleryimportCelery#SetthedefaultDjangosettingsmoduleforthe'celery'program.#这个是导入djan......
  • django-celery-results - 使用 Django ORM/Cache 作为结果后端
    https://docs.celeryq.dev/en/stable/django/first-steps-with-django.html#django-celery-results-using-the-django-orm-cache-as-a-result-backend这个一般自己设置一下result_backend也行,要用django-celery-results也是一个选择。......
  • django-celery-beat插件使用
    该插件从Django管理界面管理celery的定期任务,您可以在其中动态****创建、编辑和删除定期任务以及它们的运行频率。django-celery-beat提供了几种添加定时或周期性任务的方式,预先在在settings.py中添加好定时任务。通过Djangoadmin后台动态添加。(实际上就是操作model模型类)......
  • 《DjangoApp开发》第二集,创建项目骨架、主菜单页面及跳转
    2023年10月3日这节课做的事情创建项目目录对项目进行全局时间、配置创建项目骨架,配置一堆文件写主页面切换页面项目结构。当我们发现代码很长的时候就分成多个子目录菜单界面对战界面玩家玩家的技能玩家的每一个技能玩家的移动背景时间设置界......
  • 第8期ThreadX视频教程:应用实战,将裸机工程移植到RTOS的任务划分,驱动和应用层交互,中断DM
    视频教程汇总帖:https://www.armbbs.cn/forum.php?mod=viewthread&tid=110519 这个是我们初学RTOS面临的最直接问题,很多时候,简单的RTOS机制明白了,API也会调用了,就是添加到RTOS后,总感觉那里不对劲,怎么使用才是正确姿势。针对这些问题,本期视频教程,我们ThreadX内核教程穿插一期实......