django头像自定义模板标签
Posted
技术标签:
【中文标题】django头像自定义模板标签【英文标题】:django avatar custom template tag 【发布时间】:2011-03-31 09:41:04 【问题描述】:我的网站非常直观,我想利用整个网站的用户头像,所以我认为编写自定义模板标签是最好的方法。
我的UserProfile
与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)
现在这是我正在编写的第一个标签,我不确定该用哪种方式真正使用它。
【问题讨论】:
【参考方案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头像自定义模板标签的主要内容,如果未能解决你的问题,请参考以下文章