装饰器的代码不是很明白,希望老师能解答下
来源: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
相似问题