博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Flask中那些特殊的装饰器
阅读量:4677 次
发布时间:2019-06-09

本文共 1331 字,大约阅读时间需要 4 分钟。

模板相关的装饰器

@app.template_global()

用法:

@app.template_global()  # 记得加括号def jiafa(a, b):  # 这个方法每调用一次就需要传一次, 将他做成一个全局的就用这么麻烦了    return int(a) + int(b)

在模板中这样使用

{
{ jiafa(100, 30)}}

可以在全局范围的模板中使用这个函数, 而不用通过参数传到模板中 

 

@app.template_filter()

用法:

@app.template_filter()def jianfa(a, b, c):    return a - b - c

在模板中这样使用

{
{ 100|jianfa(100, 300) }}

 

类似于django中间件的装饰器

@app.before_request

用法:

@app.before_requestdef confirm():    """    在执行视图函数之前执行    :return:    """    if session.get('auth') or request.path == "/login" or request.path.startswith('/static'):        return None    else:        next_url = request.path        return redirect('/login?next=%s' % (next_url,))

 

@app.after_request

用法:

@app.after_requestdef access_login(response):    """    视图函数执行完毕并执行成功后执行    :param response: 必须接受一个response    :return:     """    ip = request.remote_addr    url = request.path    print("%s访问 %s 成功" % (ip, url))    return response  # 必须返回一个response对象

 

@app.errorhandler(404)

@app.errorhandler(404)  # 404: 监听的错误码def error(args):    """    当出现某个错误状态码时会调用这个函数    :param args: 错误信息    :return:    """    return render_template("error.html")

 

不同装饰器的执行的顺序

多个被装饰器装饰的函数的执行顺序是什么呢?

@app.after_request: 按照代码顺序, 从上往下执行

@app.after_request: 按照代码顺序, 从下往上执行

@app.errorhandler(404): 监听到哪一个错误码就执行对应的函数

 

 

 

 

 

转载于:https://www.cnblogs.com/594504110python/p/10134300.html

你可能感兴趣的文章
Android项目外接高德地图代码混淆注意事项
查看>>
Android URI简单介绍
查看>>
UVA 1546 - Complete the sequence!(差分法)
查看>>
ubuntu server编译安装nginx
查看>>
实现简单的二级级联
查看>>
Java抓取网页数据(原网页+Javascript返回数据)
查看>>
AjaxPro的使用
查看>>
VS2010的项目配置
查看>>
React native
查看>>
QT-布局管理
查看>>
随手挖坑记录一
查看>>
函数的结构,调用,参数以及函数的返回值.
查看>>
C++ Programming Language中的Calculator源代码
查看>>
蒙板 模态对话框
查看>>
8626 原子量计数
查看>>
博士这条船(留美博士生写给后来人的辛酸回忆:你适合读博士和搞科研吗?在选择继续读研、读博的这条路上,你准备好了吗?)...
查看>>
关于C#值类型,引用类型,值传递,引用传递
查看>>
[HAOI2009] 毛毛虫
查看>>
pythong中的全局变量的调用和嵌套函数中变量的使用
查看>>
【POJ - 3009】Curling 2.0 (dfs+回溯)
查看>>