Flask中那些特殊的装饰器
模板相关的装饰器
@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中那些特殊的装饰器的更多相关文章
- 关于Springmvc中include与Sitemesh装饰器的基本使用
关于Springmvc中include与Sitemesh装饰器的使用 !!!转载请注明出处=>http://www.cnblogs.com/funnyzpc/p/7283443.html 静态包 ...
- flask 第三章 特殊装饰器 CBV Flask-Session WTForms
1.flask中的特殊装饰器 前面我们讲过的装饰器函数中,用来登录验证,这次我们来介绍几个flask中的特殊装饰器 1). @app.before_request 具体的用途是: 在请求进入视图函数之 ...
- flask的路由配置,特殊装饰器
1,flask中的路由 endpoint-url_for反向地址 endpoint默认是视图函数名endpoint="雪雪" methods 指定视图函数的请求方式,默认GET d ...
- Flask蓝图Blueprint和特殊装饰器
Flask 中的 蓝图 Blueprint 不能被run的flask实例:相当于django中的app01 应用 蓝图作用:功能隔离 路由隔离 Blueprint就是 一个不能run的flask 蓝图 ...
- python中函数总结之装饰器闭包
1.前言 函数也是一个对象,从而可以增加属性,使用句点来表示属性. 如果内部函数的定义包含了在外部函数中定义的对象的引用(外部对象可以是在外部函数之外),那么内部函数被称之为闭包. 2.装饰器 装饰器 ...
- 轻松理解python中的闭包和装饰器 (下)
在 上篇 我们讲了python将函数做为返回值和闭包的概念,下面我们继续讲解函数做参数和装饰器,这个功能相当方便实用,可以极大地简化代码,就让我们go on吧! 能接受函数做参数的函数我们称之为高阶函 ...
- 轻松理解python中的闭包和装饰器(上)
继面向对象编程之后函数式编程逐渐火起来了,在python中也同样支持函数式编程,我们平时使用的map, reduce, filter等都是函数式编程的例子.在函数式编程中,函数也作为一个变量存在,对应 ...
- python中的迭代器&&生成器&&装饰器
迭代器iterator 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束. 迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外, ...
- python中的闭包和装饰器
重新学习完了函数,是时候将其中的一些重点重新捋一捋了,本次总结的东西只有闭包和装饰器 1.闭包 闭包是python函数中的一个比较重要功能,一般闭包都是用在装饰器上,一般学完闭包就会去学习装饰器,这俩 ...
随机推荐
- 基于以太坊的Token开发步骤
Token开发步骤 一.准备工具1.安装以太坊brew tap ethereum/ethereumbrew install ethereum2.node:brew install nodejs3.安装 ...
- 使用github参与到开源项目的维护
参与到开源项目的维护工作一般分两种,一种是由项目建立者拉入到贡献者列表中,拥有对项目的读写权限,而普通用户对项目仅有读取权限,另一种是fork项目到自己仓库,然后把修改后的内容发送给项目管理者者请求合 ...
- 页面引入(include)方式的研究及性能比较
1. 应用Html中的框架(iframe) 目前大多数门户网站都应用iframe来进行页面上广告的投放,就是将不同的广告分别应用iframe投放到主页面上,优点是效率高,互不影响,缺点是不符合网页标准 ...
- rolllup巧用
--构造环境drop table dept purge;drop table emp purge;create table dept as select * from scott.dept;creat ...
- easyui学习笔记6—基本的Accordion(手风琴)
手风琴也是web页面中常见的一个控件,常常用在网站后台管理中,这里我们看看easyui中基本的手风琴设置. 1.先看看引用的资源 <meta charset="UTF-8" ...
- OC基础数据类型-NSString
1.字符串的初始化 //字符串的初始化 NSString *str = @"Hello world!"; NSString *str2 = [[NSString alloc] in ...
- django 静态文件
django 1.8版本以上 django 静态文件配置. 小作之前, 一直觉得django的静态文件配置非常的麻烦. 1. 要设置url(r'^static/(?P<path>.*)&a ...
- Swift编程语言学习1.1——常量与变量
常量和变量把一个名字(比方maximumNumberOfLoginAttempts或者welcomeMessage)和一个指定类型的值(比方数字10或者字符串"Hello")关联起 ...
- Windows下我喜爱的那些体积小但功能强大的软件
我还是开门见山的说吧,接下来我给你大家介绍一些Windows上一些小软件,涉及到图片编辑,浏览器下载,文件搜索,音乐下载,文本编辑,视频录制等方面! 一:WinZIP中国 平常我们难免会遇到各种解压压 ...
- docker-3-常用命令(下)
importance 1.启动守护式容器 docker run -d 容器名 使用镜像centos:latest以后台模式启动一个容器 docker run -d centos 问题:然后do ...