Для выполнения этой работы есть две части. Сначала конфигурация Django. Для этого есть две настройки, которые вы уже упоминали - MEDIA_URL
и MEDIA_ROOT
. Как уже отмечалось в комментариях, MEDIA_ROOT
должен быть абсолютным путем. Например:
MEDIA_ROOT = `/abs/path/to/project/media/`
Вторая часть фактически служит для файлов. Если вы находитесь в производстве, вы НИКОГДА не хотите обслуживать свои статические или мультимедийные файлы через Django, поэтому вам нужно настроить Apache или nginx или любую серверную систему, которую вы используете, чтобы обслуживать файлы вместо Django. Если вы, с другой стороны, все еще разрабатываете приложение, есть простой способ заставить Django обслуживать мультимедийные файлы. Идея заключается в том, чтобы изменить свой urls.py
и использовать статический сервер файлов в Django, чтобы служить медиа-файлов, а также:
# urls.py
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = patterns('',
# other patterns
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Подробнее об этом подходе в Django docs.
Также FYI, вы, вероятно, не должны использовать {{MEDIA_URL}}{{article.mainPhoto}}
, чтобы получить URL-адрес изображения. Такой подход будет нарушен, например, если вы больше не будете использовать хранилище файловой системы для статических файлов и переключитесь на что-то другое, например Amazon S3. Это всегда хорошая идея для бэкенд хранения, чтобы выяснить URL:
<img src="{{article.mainPhoto.url}}" />
, что вы получили, если вы оставите MEDIA_ROOT =»" – drabo2005
MEDIA_ROOT должен быть абсолютным. Абсолютные пути начинаются с косой черты. –