python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Flask 特殊装饰器

Flask中特殊装饰器的使用

作者:双天至尊-王天龙

本文主要介绍了Flask中特殊装饰器的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

(1)@app.before_request

请求到达视图函数之前,进行自定义操作,类似django中间件中的process_request,在app中使用则为全局,在蓝图中使用则针对当前蓝图

注意正常状态下return值必须为None

(2)@app.after_request

响应返回到达客户端之前,进行自定义操作,类似jango中间件中的process_response,在app中使用则为全局,在蓝图中使用则针对当前蓝图

注意正常状态下视图函数必须定义一个形参接收response对象,并通过return response返回

(3)@app.errorhandler()

错误状态码捕获执行函数,装饰器参数务必是4xx或者5xx的int型错误状态码

(4) @app.template_global() :定义装饰全局模板可用的函数,直接可在模板中进行渲染使用

@app.template_filter(): 定义装饰全局模板可用的过滤器函数,类似django中的自定义过滤器,直接可在模板中使用

这两个特殊装饰器主要用在模板渲染!!!

import apps
from flask import request, session, redirect
 
app = apps.create_app() 
 
@app.before_request
def before1():
    print("before1", request)
  
@app.before_request
def before2():
    print("before2")
    if request.path == "/":
        return None
    else:
        #这里抛出了一个异常,会被@app.errorhandler(Exception)
        # 捕获到。
        raise Exception("hahaha") 
 
@app.before_request
def before3():
    print("before3")
  
@app.after_request
def after1(res):
    print("after1")
    return res 
 
@app.after_request
def after2(res):
    print("after2")
    return res 
 
@app.after_request
def after3(res):
    print("after3")
    return res
  
# 处理异常,接受参数,可以重定向到指定页面
@app.errorhandler(Exception)
def error(e):
    print("error")
    return redirect("/") 
 
@app.route("/login")
def login():
    print("login")
    return "login"
 
@app.route('/')
def hello_world():  # put application's code here
    return 'Hello World!'
 
if __name__ == '__main__':
    app.run()

到此这篇关于Flask中特殊装饰器的使用的文章就介绍到这了,更多相关Flask 特殊装饰器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文