如何在included_tag中缓存模板

时间:2018-08-29 10:22:38

标签: python django caching

我正在尝试将整个模板缓存在includement_tag中,但是我对此有疑问。

这是我的include_tag代码:

Navigator.popUntil

和html模板的代码:

@register.inclusion_tag('accounts/helpers/user_info.html', takes_context=True)
def user_info(context, username, size=40):
    request = context['request']

    user = cache.get(username)

    if not user:
        user = User.objects.get(pk=username)
        print("cached")
        cache.set(
            username,
            user,
            settings.USER_LAST_ACTIVITY_TIMEOUT)

    return {'user': user, 'size': size}

使用此代码,我仅缓存用户,但我想在标记中缓存整个模板。你能帮我怎么做吗?我已经尝试了一切,但是我不知道如何处理。

谢谢

1 个答案:

答案 0 :(得分:0)

我使用简单标记:

@register.simple_tag(takes_context=True)
def user_info(context, username, size=40):
    tpl = cache.get(username)
    if not tpl:
        user = User.objects.get(pk=username)
        template = loader.get_template('app/user_info.html')
        tpl = template.render({'user': user, 'size': size})
        cache.set(username, tpl)
    return tpl