Django views函数添加装饰器
例如:FBV模式装饰器
def add_decorator(add): def inner(*args, **kwargs): # 添加的函数逻辑 装饰部分 a = add(*args, **kwargs) # 被装饰函数 return a return inner @add_decorator # 装饰器 def add(request): pass
''' 装饰器: 检测任意一段代码的执行时间 外部函数用来接受要装饰的函数(地址值) 内部函数用来接受要装饰函数的参数 ''' import time def jisShi(f): def inner(): a = time.time() f() b = time.time() print(b - a) return inner @jisShi def cheng(): sum = 1 for i in range(1,9999): sum *= i cheng()
def outAdd(jia): (函数名与@后面名称相同,括号内随意传参,代表的是“jia”函数) def inner(num,num2): print("****************") ( 装饰内容) jia(num,num2) return inner @outAdd ( @后面可写随意字母) def jia(num,num2): print(num+num2) jia(1,2)
报错:
ValueError: The view app.views.xxxxxx didn't return an HttpResponse object. It returned None inst
解决:
缺少return,加一个return a 即可
参考文档:
http://www.manongjc.com/detail/9-dzwgvycyscclxyf.html