Django注释自定义用户个人资料头像

时间:2018-08-02 02:52:11

标签: django django-comments

我正在使用Ajax Comments System来呈现评论和表格 而且我有一个包含头像字段的自定义用户个人资料

class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, default="")
    avatar = ImageField('userprofile', default='avatars/default.png', upload_to="avatars" )

我以前经常做的事:

from Profiles.models import UserProfile as Author
def BlogPost(request, slug):
    post_slug = posts.objects.get(slug=slug)
    author_avatar = Author.objects.get(user=User.objects.get(username=post_slug.author).id).avatar.url
    args = {
        'post_slug': post_slug,
        'author_avatar': author_avatar,
        'related': _related(post_slug.tags),
    }

    return render(request, "blog_post.html", args)

但是,现在我正在堆叠每个评论员头像... 即使我曾经修改或覆盖程序包,我也需要解决方案

1 个答案:

答案 0 :(得分:0)

我第一次尝试覆盖视图并添加一些上下文,但是后来我意识到模板args位于模板标记文件中,因此我将文件复制到了项目中,并创建了一个返回化身的新标记。

@register.simple_tag
def get_avatar(Profile, comment):
    return Profile.__class__.objects.get(user=comment.user.id).avatar.url 
# {% get_avatar UserProfile comment %}

我完全错过了模板标签文件夹,这就是为什么我花了一些时间来解决它的原因 更新 我遇到了一些经理和归因错误,这是我最后的自定义标签 如有其他解决方案,请发布

@register.simple_tag
def get_avatar(Profile, comment):
        user_id = comment.user.id
        try:
            return Profile.__class__.objects.get(user=user_id).user.avatar.url
        except:
            try:
                return Profile.objects.get(user=user_id).user.avatar.url
            except AttributeError:
                return UserProfile.objects.get(user=user_id).avatar.url

将其作为隐藏输入放在模板中的avatar标记之前,以避免引荐来源ajax服务器错误(对我来说,此返回段代码,由于某种原因,用户头像网址将作为引荐来源发送)

@register.simple_tag
def get_url(comment):
    return str(comment.content_object).replace(' ', '_')