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函数中的一个比较重要功能,一般闭包都是用在装饰器上,一般学完闭包就会去学习装饰器,这俩 ...
随机推荐
- C# FTP删除文件以及文件夹
1.FTP文件操作类 FtpClient using System; using System.Collections.Generic; using System.Linq; using Syst ...
- Linux ->> UBuntu 14.04 LTE下设置静态IP地址
UBuntu 14.04 LTE设置IP地址和一些服务器版本的Linux还不太一样.以Centos 7.0为例,网卡IP地址的配置文件应该是/etc/sysconfig/network-scripts ...
- 十个免费的 Web 压力测试工具
本文列举了是十个免费工具,可以用来进行Web的负载/压力测试的.这样你就可以知道你的服务器以及你的WEB应用能够扛得住多少的并发量,以及网站性能. 0. Grinder – Grinder是一个开源 ...
- 动态给table添加动态航
<html> <head> <title>usually function</title> <meta http-equiv="Cont ...
- Python中GBK, UTF-8和Unicode的编码问题
编码问题,一直是使用python2时的一块心病.几乎所有的控制台输入输出.IO操作和HTTP操作都会涉及如下的编码问题: UnicodeDecodeError:‘ascii’codec can’t d ...
- for循环里面的break;和continue;语句
for循环里面的break;和continue;语句 break语句 哇,我已经找到我要的答案了,我不需要进行更多的循环了! 比如,寻找第一个能被5整除的数: for循环中,如果遇见了break语句, ...
- TIAGO机器人传感器参数简介 手册翻译
本来认为这篇文章是最没人气的,竟然收到了回复,看来要继续更新本文了.留下笔者联系方式,邮箱leop22@163.com,欢迎邮件交流. 防止不良爬虫,原文链接:http://www.cnblogs.c ...
- zt C++ list 类学习笔记
C++ list 类学习笔记 分类: C++ 2011-09-29 00:12 7819人阅读 评论(0) 收藏 举报 listc++iteratorvectorcconstructor 双向循环链表 ...
- 阅读MySQL文档第21章摘抄
触发程序是与表相关的数据库对象. mysql> CREATE TABLE account (acct_num INT, amount DECIMAL(10,2)); Query OK, 0 ro ...
- Java---页面之间传值跳转
从首页A进入页面B,然后从B页面登录,成功后跳转到A页面,并打印一句话“登录成功”,传值需要用的后台的. 在B页面写: <% session.setAttribute("key ...