请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

装饰器的代码不是很明白,希望老师能解答下

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里去获取 判断是否存在 ,如果存在直接返回,不再执行业务函数,如果不存在则执行业务函数,将函数结果缓存起来以便下次调用使用,并将结果返回。

0 回复 有任何疑惑可以回复我~
  • 提问者 慕哥1266152 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2019-10-22 22:19:43
  • 老师,你课程里说的那个根据不同的Id 装饰器这里怎么写呢
    回复 有任何疑惑可以回复我~ 2020-06-07 00:07:11
  • ld?时间长了记不住了。不过装饰器主要对于参数传递要非常灵活才能兼容更多场景
    回复 有任何疑惑可以回复我~ 2020-06-07 11:43:51
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信