模板相关的装饰器

@app.template_global()

用法:

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

在模板中这样使用

<h2>{{ jiafa(100, 30)}}</h2>

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

@app.template_filter()

用法:

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

在模板中这样使用

<h2>{{ 100|jianfa(100, 300) }}</h2>

类似于django中间件的装饰器

@app.before_request

用法:

@app.before_request
def 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_request
def 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): 监听到哪一个错误码就执行对应的函数

Flask中那些特殊的装饰器的更多相关文章

  1. 关于Springmvc中include与Sitemesh装饰器的基本使用

    关于Springmvc中include与Sitemesh装饰器的使用 !!!转载请注明出处=>http://www.cnblogs.com/funnyzpc/p/7283443.html 静态包 ...

  2. flask 第三章 特殊装饰器 CBV Flask-Session WTForms

    1.flask中的特殊装饰器 前面我们讲过的装饰器函数中,用来登录验证,这次我们来介绍几个flask中的特殊装饰器 1). @app.before_request 具体的用途是: 在请求进入视图函数之 ...

  3. flask的路由配置,特殊装饰器

    1,flask中的路由 endpoint-url_for反向地址 endpoint默认是视图函数名endpoint="雪雪" methods 指定视图函数的请求方式,默认GET d ...

  4. Flask蓝图Blueprint和特殊装饰器

    Flask 中的 蓝图 Blueprint 不能被run的flask实例:相当于django中的app01 应用 蓝图作用:功能隔离 路由隔离 Blueprint就是 一个不能run的flask 蓝图 ...

  5. python中函数总结之装饰器闭包

    1.前言 函数也是一个对象,从而可以增加属性,使用句点来表示属性. 如果内部函数的定义包含了在外部函数中定义的对象的引用(外部对象可以是在外部函数之外),那么内部函数被称之为闭包. 2.装饰器 装饰器 ...

  6. 轻松理解python中的闭包和装饰器 (下)

    在 上篇 我们讲了python将函数做为返回值和闭包的概念,下面我们继续讲解函数做参数和装饰器,这个功能相当方便实用,可以极大地简化代码,就让我们go on吧! 能接受函数做参数的函数我们称之为高阶函 ...

  7. 轻松理解python中的闭包和装饰器(上)

    继面向对象编程之后函数式编程逐渐火起来了,在python中也同样支持函数式编程,我们平时使用的map, reduce, filter等都是函数式编程的例子.在函数式编程中,函数也作为一个变量存在,对应 ...

  8. python中的迭代器&&生成器&&装饰器

    迭代器iterator 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束. 迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外, ...

  9. python中的闭包和装饰器

    重新学习完了函数,是时候将其中的一些重点重新捋一捋了,本次总结的东西只有闭包和装饰器 1.闭包 闭包是python函数中的一个比较重要功能,一般闭包都是用在装饰器上,一般学完闭包就会去学习装饰器,这俩 ...

随机推荐

  1. leetcode-surrounded regions-ZZ

    Problem Statement (link): Given a 2D board containing 'X' and 'O', capture all regions surrounded by ...

  2. 路由协议RIP、EIGRP、OSPF

    前提 在网络拓扑中,我们经常多个路由连接不同子网,路由之间要转发不同子网的包,前提是路由之间要知道对方路由的存在. 因此这次我要写的是有关维护路由之间存在的协议,RIP.EIGRP和OSPF,静态路由 ...

  3. C#中的多线程 - 并行编程 z

    原文:http://www.albahari.com/threading/part5.aspx 专题:C#中的多线程 1并行编程Permalink 在这一部分,我们讨论 Framework 4.0 加 ...

  4. Windows 如何查看本地端口被进程占用的情况?

    1.查看端口占用情况: 1.开始--运行--cmd 进入命令提示符. 2. 输入netstat -ano(或netstat -nao) ,即可看到所有进程(这里显示进程的PID)占用端口的情况. 3. ...

  5. C与C++混编

    了解一下C与C++如何合作,gcc和g++编译出来的东西有什么区别. 工具使用 objdump是个好工具,可以用于查看.o文件的内容,也可以查看可执行文件的内容. 查看符号表 objdump -t f ...

  6. TIA Portal 和 scout 之间的驱动器地址分配

    TIA Portal集成了scout.在使用simotion控制器时,分配驱动装置的地址可能会碰到问题. 解决方法: 1)在配置驱动时,TIA Portal软件的语言需要选择为应为中文 2)unico ...

  7. 轻松bypass360网站卫士WAFSQL注入防护

    随便网上找了一个网站,只是测试一下,没有干非法的事情! code 区域 http://www.py-guanyun.com/CompHonorBig.asp?id=49 code 区域 http:// ...

  8. PyCharm的Debug工具栏中的Watches

    In the Watches pane you can evaluate any number of variables or expressions in the context of the cu ...

  9. LSOF 安装与使用(功能强大)

    Linux上安装: tar zxvf lsof_4.76.tar.gz cd lsof_4.76 ls 00.README.FIRST_4.76       lsof_4.76_src.tar.gz  ...

  10. Server.xml解析

    来源 本文整理自 <Tomcat内核设计剖析>.<Tomcat结构解析> 加上自己的理解.源码来自 Tomcat8.5 版本 <Server port="800 ...