0

在 Django 模板中,我有一个 pinterest 样式的提要,每个块的底部都有一个头像图片。

我正在使用以下模板标签来显示头像图片:

{% avatar user 40 %}

def avatar(user, size=80):
    if not isinstance(user, User):
        try:
            user = User.objects.get(username=user)
            alt = unicode(user)
            url = avatar_url(user, size)
        except User.DoesNotExist:
            url = AVATAR_DEFAULT_URL
            alt = _("Default Avatar")
    else:
        alt = unicode(user)
        url = avatar_url(user, size)
    picpath= """<img src="%s" alt="%s" width="%s" height="%s" />""" % (url, alt,
            size, size)
    return picpath

问题是这个模板标签每次都会调用数据库来提取头像图片的路径。

基本上我想要做的只是使这个调用所需的最少次数(即提取当前视图中的唯一用户并且只获取这些图片一次)

有没有办法在模板中做到这一点?或者我是否必须基本上改变我的观点才能做到这一点?

4

1 回答 1

2

您可能想要使用缓存。您可以使用模板片段缓存来缓存对avatar标记的调用:

{% load cache %}
{# Cache for 60 seconds; you can use any value you want here #}
{% cache 60 avatars %}
  {% avatar user 40 %}
{% endcache %}

您还可以在视图中进行缓存:可以是整个视图,也可以只缓存您的结果。但是模板缓存可能是最简单的。

于 2012-11-07T02:37:58.580 回答