django头像自定义模板标签

Posted

技术标签:

【中文标题】django头像自定义模板标签【英文标题】:django avatar custom template tag 【发布时间】:2011-03-31 09:41:04 【问题描述】:

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

我的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】:

我想你想要一个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 "  />

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

% load foobar %

% my_avatar my_user %

【讨论】:

嗯,似乎无法让它工作。在我的首页上,我使用以下语句 % for post in posts % 呈现帖子,该语句调用我的帖子模型,在我的帖子模型中我有一个用户字段,那么这一切仍然适用吗? 我已经让它工作得非常顺利。我有一个问题。我有一个消息模型,它有一个发送者和一个接收者。当我通过收件人时,它起作用了。当我通过发件人时,它失败了,虽然它们都是用户的foreignKey字段......知道吗?

以上是关于django头像自定义模板标签的主要内容,如果未能解决你的问题,请参考以下文章

Django之博客系统:自定义模板标签

Django 自定义模板标签和模板加载器

Django 自定义模板标签不返回任何值

JQuery 在 Django 自定义模板标签的模板中不起作用

Django - 自定义模板标签传递关键字参数

django自定义模板标签和过滤器