Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Django模板中重用对templatetag的调用_Django - Fatal编程技术网

在Django模板中重用对templatetag的调用

在Django模板中重用对templatetag的调用,django,Django,在Django模板中,我有一个pinterest风格的提要,在每个块的底部有一张头像图片 我正在使用以下模板标签显示化身图片: {%avatar用户40%} def avatar(user, size=80): if not isinstance(user, User): try: user = User.objects.get(username=user) alt = unicode(user) u

在Django模板中,我有一个pinterest风格的提要,在每个块的底部有一张头像图片

我正在使用以下模板标签显示化身图片:

{%avatar用户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
def化身(用户,大小=80):
如果不存在(用户,用户):
尝试:
user=user.objects.get(username=user)
alt=unicode(用户)
url=化身url(用户、大小)
除User.DoesNotExist外:
url=化身\u默认\u url
alt=389;(“默认化身”)
其他:
alt=unicode(用户)
url=化身url(用户、大小)
picpath=“”%(url,alt,
尺寸,尺寸)
返回路径
问题是,这个templatetag每次都会调用数据库,以提取到头像pic的路径

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


在模板中是否有这样做的方法?或者我必须基本上改变我的视图才能做到这一点吗?

您可能想使用。您可以使用缓存对
avatar
标记的调用:

{% load cache %}
{# Cache for 60 seconds; you can use any value you want here #}
{% cache 60 avatars %}
  {% avatar user 40 %}
{% endcache %}
您还可以在视图中进行缓存:要么是,要么只是。但模板缓存可能是最简单的