2015-02-13 3 views
0

У меня есть проект, который дает пользователю возможность загрузить аватар. Загрузка работает отлично, и, фактически, я вижу аватара в корне / проекта. Однако, когда я перемещаюсь /anything_else/, мой проект не может найти аватар.Видя аватар в нескольких представлениях в Django

Ниже приводится соответствующая часть модели, которая обрабатывает загрузку:

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

Я слышал наследование шаблонов, но я не совсем уверен, как это сделать. Есть идеи?

EDIT

Я решил, изменив

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

ответ

2

Проблема не имеет ничего общего с наследованием шаблонов, кажется, может быть, ваш MEDIA_URL не начинается с /

Это будет означать, у вас есть относительный 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

+0

'STATIC_URL = '/ статический /' '. Я также попытался добавить '/' в 'upload_to' и привел к сбою. – erip

+0

жаль, что я имел в виду 'MEDIA_URL', и не для' upload_to', потому что это путь на диске, а не URL-адрес – Anentropic

+0

'MEDIA_URL = '''. Мой каталог 'media' находится в моей' static', поэтому я думаю, что все должно быть хорошо. – erip