装饰器的代码不是很明白,希望老师能解答下
来源:4-7 redis在django中的两种配置方法与使用&缓存装饰器的书写
			慕哥1266152
2019-10-22
def cache(func):
    @wraps(func)
    def wrapper(obj, *args):
        key = args[0]
        value = _cache.get(key)
        if value:
            print('get it')
            return json.loads(value)
        rs = func(obj, *args)
        _cache.set(key, json.dumps(rs))
        return rs
    return wrapper
    @classmethod
    @cache
    def get(cls, id):
        rs = cls.objects.get(id=id)
        return {
            'id': rs.id,
            'username': rs.username,
            'age': rs.age,
            'email': rs.email,
            'info': rs.info,
            'create_time': str(rs.create_time),
            'update_time': str(rs.update_time)
        }
写回答
	1回答
- 
				
				
装饰器在这里的作用是拿到缓存的key去redis里去获取 判断是否存在 ,如果存在直接返回,不再执行业务函数,如果不存在则执行业务函数,将函数结果缓存起来以便下次调用使用,并将结果返回。
032020-06-07 
相似问题