django头像自定义模板标签

时间:2010-08-18 07:24:26

标签: django django-templates django-imagekit django-custom-tags

我的网站非常直观,我想在整个网站上使用用户头像,所以我认为编写自定义模板标记是最好的方法。

我的UserProfileUser相关联,并且profile_pic

我正在使用django-imagekit,因此ImageModel开始发挥作用

class UserProfile(ImageModel):  
    profile_pic = models.ImageField(storage=cloudfiles_storage,
                                    upload_to='avatars',
                                    default='avatar-blank.jpg')`

在我的首页上,我列出了人们通过致电我所有最新帖子发布的新闻和信息。并且每个用户都与帖子相关联。

所以在我的个人资料中,我创建了templatetags文件夹,还创建了一个名为myavatar_tags.py的文件

在我的avatar_tags.py中,我渲染以下内容

from accounts.models import UserProfile  
from imagekit.models import ImageModel  
from django import template 

register = template.Library()

@register.simple_tag  
def my_avatar(request, user):  
    avatar = UserProfile.objects.get(pk=user.id)

my_avatar = register.tag(my_avatar)

现在这是我写的第一个标签,我不确定采用哪种方式。

1 个答案:

答案 0 :(得分:1)

我想你想要一个inclusion tag

@register.inclusion_tag('avatar.html')
def my_avatar(user):
  return {'user': UserProfile.objects.get(pk = user.id) }

然后在名为avatar.html的模板中,正常为您的代码编写模板 - 您可能需要以下内容:

<img src="{{ user.profile_pic.url }}" alt="{{ user.get_name_somehow }}" />

然后您可以像这样使用此标记 - 给定一个呈现此模板的视图,通过名称User传递my_user对象,并将上面的Python代码放在​​一个名为的文件中foobar.py

{% load foobar %}

{% my_avatar my_user %}