flask中通过修饰器对路径和视图函数进行了映射,如在映射当前路径时,通过了以下语句
flask中将每个视图函数都用修饰器进行了修饰,并将其保存在全局的映射中,当IE客户端输入所需的URL时,会从该映射中查找到对应的视图函数,然后进行调用。
git clone Git@github.com:HymanLiuTS/flaskTs.git
获取本文源代码:
git checkout FL03
@route('/'):
def index():
...
return ...
上面是python中修饰器的语法。修饰器可以对函数进行封装,可以通过修饰器进行做一些在调用函数时必须做的一些操作。将函数通过修饰器进行修饰之后,再次调用该函数就不会再单纯的调用之前该函数原有的代码,而是会加上修饰器中的内容。
#!/usr/bin/env python
from time import ctime,sleep
def settime(func):
def tempfun():
print '[%s] %s called'%(ctime(),func.__name__)
return func
return tempfun
@settime
def myfunc():
pass
myfunc()
sleep(4)
for i in range(2):
myfunc()
sleep(1)
上面的代码中,settime就是myfunc的一个修饰器,修饰器分为带惨和不带参两种,这里的参数是指除被修饰函数以外的参数,上述修饰器属于不带参修饰器,修饰器中需要自己定义一个额外的函数,该函数把被修饰函数作为返回值,而修饰器将该函数作为返回值。函数一旦被修饰器修饰 ,以后再调用时就不是单纯的调用该函数,上述代码实现了在每次调用myfunc前打印输出当前的时间。
结果如下:
hyman@hyman-laptop:~/work/test$ ./decrator.py
[Thu Sep 15 22:20:50 2016] myfunc called
[Thu Sep 15 22:20:54 2016] myfunc called
[Thu Sep 15 22:20:55 2016] myfunc called
flask中将每个视图函数都用修饰器进行了修饰,并将其保存在全局的映射中,当IE客户端输入所需的URL时,会从该映射中查找到对应的视图函数,然后进行调用。
可以通过全局的app.url_map变量查看这些映射关系
>>> from test import app
>>> app.url_map
Map([<Rule '/' (HEAD, OPTIONS, GET) -> index>,
<Rule '/static/<filename>' (HEAD, OPTIONS, GET) -> static>])
Github位置:
https://github.com/HymanLiuTS/flaskTs
git clone Git@github.com:HymanLiuTS/flaskTs.git
获取本文源代码:
git checkout FL03