在Django中查看多个视图中的头像

时间:2015-02-13 17:08:10

标签: django django-templates avatar

我有一个项目,可以让用户选择上传头像。上传工作正常,事实上,我可以在项目的根/中看到头像。但是,当我导航/anything_else/时,我的项目似乎无法找到头像。

以下是处理上传的模型的相关部分:

avatar = models.ImageField('profile picture', upload_to='static/media/images/avatars/', null=True, blank=True)

在我的user_base.html模板中,我有以下显示头像的行

<img id="profile_pic" src="{{ user.avatar }}" alt="Profile picture" style="width:30px;height:30px;border:0">

因此,如果我上传图片guitar.jpg并转到mysite.com/static/media/images/avatars/guitar.jpg,我们就会找到它。

但是,如果我导航到mysite.com/news/,我仍然希望有一个可见的头像,但我会得到一个404.这是因为它在mysite.com/news/static/media/images/avatars/guitar.jpg

查找图像

我听说过模板继承,但我不确定如何做到这一点。有什么想法吗?

修改

我通过改变

解决了这个问题
<img id="profile_pic" src="{{ user.avatar }}" alt="Profile picture" style="width:30px;height:30px;border:0">

<img id="profile_pic" src="/{{ user.avatar }}" alt="Profile picture" style="width:30px;height:30px;border:0">

1 个答案:

答案 0 :(得分:2)

问题与模板继承无关,似乎您的MEDIA_URL不能以/开头

这意味着您有一个相对网址(请参阅Absolute vs relative URLs

我认为你需要在模板中使用<img src="{{ user.avatar.url }}">

https://docs.djangoproject.com/en/1.7/ref/models/fields/#django.db.models.fields.files.FieldFile.url