2015-03-23 5 views
0

Pls сообщите мне. Почему ../static/image.jpg показать фотографии, и ../media/image.jpg сейчас показаныDjango not show images

Нужна ссылка на письмо? Нужно изменить настройки? Я не отвечаю в документации.

Справка по PLS.

2 ночь поиск ответ.

Необходимо загрузить с панели администратора фотографию и показать в шаблонах.

<img src="{{ tovar.product_img.url }}"> 

ответ

1

Для отображения изображения вам необходимо загрузить статические файлы в шаблон, прежде чем ссылаться на них. Вот как вы должны показывать изображение в своем шаблоне:

{% load staticfiles %} 

<img src="{% static 'image.jpg' %}"> 

Это изображение необходимо сохранить в вашей статической папке. ../YourApp/YourApp/static/image.jpg где я храню свою статическую папку. Очевидно, было бы лучше, чтобы структурировать его дальше с папкой изображений внутри статической папки и т.д ..

В настройках файла вам необходимо добавить следующие строки:

# Static asset configuration 
BASE_DIR = os.path.dirname(os.path.abspath(__file__)) 
STATIC_ROOT = 'staticfiles' 
STATIC_URL = '/static/' 

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'), 
) 

Это должно сделать трюк для вас.

+0

Статические выставки показывают. все хорошо. Не показывать Media –

+0

. Тогда почему вы не перемещаете медиа-папку внутри папки статических файлов или не создаете подобную переменную для ссылки на свою папку с носителями? –

0

В settings.py

MEDIA_ROOT = '/path/to/yourmediafolder/' 
MEDIA_URL = '/media/' # whatever but it should same in `urls.py` 

В urls.py

urlpatterns += patterns('', 
    (r'^media/(?P<path>.*)$', 'django.views.static.serve', { 
    'document_root': settings.MEDIA_ROOT})) 

Тогда в template

<img src="{{ MEDIA_URL }}images/imagename.jpg"/> 

Примечание: Здесь image должны быть '/path/to/yourmediafolder/images/imagename.jpg'

Полный пример:

У меня есть изображение test.jpg как '/home/me/test.jpg

MEDIA_ROOT = '/home/' # or /home/me/ but change url in image src 
MEDIA_URL = '/media/' 

#urls.py same as above 

В template

<img src="{{ MEDIA_URL }}me/test.jpg"/> # or <img src="{{ MEDIA_URL }}test.jpg"/> as or condition above in MEDIA_ROOT. 

Обратите внимание, что{{ MEDIA_URL }}me, не / между ними, потому что MEDIA_URL='/media/

Вы можете проверить с помощью:

http://domain.com/media/me/test.jpg # or http://domain.com/media/test.jpg as OR condition in MEDIA_ROOT 

в местные:

http://localhost:8000/media/me/test.jpg #in locally 
+0

если я использовал localhost. Как использовать ссылку в MEDIA_ROOT? –

+0

независимо от того, что 'env'. Поместите абс путь что-то вроде '/ var/myimages /' – itzMEonTV

+0

Если мой MEDIA_URL является '/ media /', а путь abs к папке «media» равен 'D:/project_django/project1/media', будет MEDIA_ROOT = 'D:/project_django/project1/media '? И если мой upload_to = 'img' (в моделях), мои загруженные файлы будут перенесены в папку 'media/img' ?? И тогда я мог бы написать в шаблоне

0

Это работает (в HTML IMG тега): SRC = "(слева волнистая, процентов) static poc.image.name (%, right squiggly):

...и благодаря тому, кто указал, что ImageField имеет имя в дополнение к (бесполезный) пути и (бесполезно) URL, например:

>>> from nutr.models import * 
>>> poc=POC.objects.get(pk=87) 
>>> poc.name 

«Эдгар»

+0

Извините, он не займет html. –