flask中对于使用同样的装饰器装饰过的视图函数。每个函数的名称都是相同的。
# 装饰器对视图函数的影响: 会改变被装饰的函数的名称,doc文档
# 解决方案:
def decorator1(func):
def wrapper(*args, **kwargs):
print("装饰器被调用了")
return wrapper
@decorator1
def demo1():
"""demo1函数"""
print("demo1")
@decorator1
def demo2():
"""demo2函数"""
print("demo2")
if __name__ == '__main__':
print(demo1.__name__)
print(demo2.__name__)
运行结果
decorator1
decorator1
不同的视图在在路由中出现了同样的名字,程序就无法区分哪一个要使用哪一个视图。
解决办法:利用warps装饰器
from functools import wraps
# 装饰器对视图函数的影响: 会改变被装饰的函数的名称,doc文档
# 解决方案:@wraps(func)
def decorator1(func):
@wraps(func)
def wrapper(*args, **kwargs):
print("装饰器被调用了")
return wrapper
@decorator1
def demo1():
"""demo1函数"""
print("demo1")
@decorator1
def demo2():
"""demo2函数"""
print("demo2")
if __name__ == '__main__':
print(demo1.__name__)
print(demo2.__name__)