渲染默认图像,Django

时间:2012-10-26 16:08:10

标签: python django django-models

我在models.py中定义了一个带有默认图像的ImageField。每次我创建一个新用户时,我都可以在管理员中看到默认图像与用户关联,就像我想要的那样。

当我尝试在我的模板中渲染它时,问题是:

{{user.userprofile.profilpic.url}}

它不起作用。图像不显示。

但如果我进入我的管理员手动更改它,即使使用完全相同的图像,它也可以。在创建用户时,看起来图像未保存到数据库中。

这是我的models.py:

    class UserProfile(FacebookProfileModel):
       user = models.OneToOneField(User)
       profilpic = models.ImageField(upload_to="profilpics/", default="/my/picture.jpeg")

我想知道如何解决这个问题。谢谢你的帮助。

2 个答案:

答案 0 :(得分:3)

您可以使用default templatefilter

{% with default_image=STATIC_URL|add:"default_image.jpg" %}
     {{ user.userprofile.profilpic.url|default:default_image }}
{% endwith %}

答案 1 :(得分:2)

您可以为模型添加方法:

class UserProfile(FacebookProfileModel):
    ... 
    profilepic = ...

    def profilepic_or_default(self, default_path="/images/..."):
        if self.profilepic:
            return self.profilepic
        return default_path

并在你的tempalte中使用它:

{{ myuser.profilepic_or_default }}