我有一个项目,可以让用户选择上传头像。上传工作正常,事实上,我可以在项目的根/
中看到头像。但是,当我导航/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">
答案 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