我想缓存在使用inclusion_tag整个模板,但我有问题这一点。
这是我使用inclusion_tag的代码:
@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}
和HTML模板的代码:
{% load static i18n humanize accounts cache %}
{% get_current_language as LANGUAGE_CODE %}
{% cache 3600 user_info user.pk LANGUAGE_CODE size %}
<a class="user-info" href="{{ user.get_absolute_url }}">
<div class="user-avatar-wrapper">
<span class="online-status {{ user.online_status }}"></span>
{% if size %}
{% avatar user size class="avatar" id="user_avatar" %}
{% else %}
{% avatar user 40 class="avatar" id="user_avatar" %}
{% endif %}
</div>
<span>
{{ user }}
<small>{{ user.groups.all|join:", " }}</small>
</span>
</a>
{% endcache %}
有了这个代码,我只缓存用户,但我想缓存在整个标签模板。你能帮我该怎么办呢?我尝试了一切,但我不知道该如何面对这一切。
谢谢
我用简单的标签:
@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