0

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

MyUserProfile与 a 相关联User并且具有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)

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

4

1 回答 1

1

我想你想要一个包含标签

@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通过 name 传递一个对象my_user,你已经将上面的 Python 代码放在一个名为foobar.py.

{% load foobar %}

{% my_avatar my_user %}
于 2010-08-18T07:35:21.250 回答