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

posted @ 2021-05-16 21:49  半日闲1  阅读(80)  评论(0编辑  收藏  举报