Python 渲染默认图像,Django

Python 渲染默认图像,Django,python,django,django-models,Python,Django,Django Models,我在models.py中定义了一个带有默认图像的ImageField。每次我创建一个新用户时,我都可以在管理员中看到默认图像与该用户关联,正如我所希望的那样 问题是,当我尝试在我的模板中渲染它时,使用如下方式: {{user.userprofile.profilpic.url}} 它不起作用。图像不显示 但是,如果我进入我的管理员并手动更改它,即使使用完全相同的图像,它也可以工作。在创建用户时,图像似乎没有保存到数据库中 这是我的models.py: class UserProfile

我在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")
我想知道我怎样才能解决这个问题。谢谢您的帮助。

您可以使用:


可以将方法添加到模型中:

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 }}

谢谢,它工作得很好。但我意识到我最初的错误是我把绝对路径放在“default=…”之后,而它应该是“MEDIA\u URL”之后的路径。这是一个非常好的方法:)!当然,蒂姆的解决方案就在它所属的地方。但我喜欢你背后的创造力:)…我从来没有想过这样做。我喜欢它;)
{{ myuser.profilepic_or_default }}