RequestContext возвращает ошибку 404 для моих изображений? - PullRequest
0 голосов
/ 23 февраля 2011

Я наткнулся на глупую ситуацию с вещью Django RequestContext.Вот мой вопрос:

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

{% for photo in photos %}
  <a href="#"> <img src="{{gallery_root}}/{{photo.get_name}}" /></a>
{% endfor %}

Мой взгляд:

def gallery_view(request):
    photos = Photo.objects.all()
    return render_to_response('gallery/sampleGallery.html',{'photos':photos},context_instance=RequestContext(request))

В моем файле настроек:

GALLERY_ROOT = os.path.join(MEDIA_ROOT, "media/uploads")

И у меня есть контекстный процессорфайл, который содержит:

from django.conf import settings

def gallery_root(request):
    return {'gallery_root':settings.GALLERY_ROOT}

Когда я открываю свой шаблон, путь к изображению появляется, однако сервер выдает 404, путь кажется правильным, но django не может их обслуживать. Так в чем причина, почему я не вижуизображения на моем шаблоне?

Источник изображения выглядит следующим образом:

<a href="#"> <img src="/Users/imperium/Desktop/sample/media/uploads/popo.jpg" /></a>  

Ответы [ 2 ]

1 голос
/ 23 февраля 2011

MEDIA_ROOT - это путь файловой системы к вашему носителю, а не путь URL. Основываясь на предложении от mongoose_za, ваш шаблон должен выглядеть так:

{% for photo in photos %}
  <a href="#"> <img src="/media/{{photo.get_name}}" /></a>
{% endfor %}

Конечно, вы можете определить новую константу в settings.py, которая соответствует выбранному вами корню URL, и использовать ее как в urls.py, так и в ваших шаблонах.

1 голос
/ 23 февраля 2011

Привет, вероятно, ваши медиа не обслуживаются должным образом. Попробуйте что-то подобное в своем файле urls.py.

# if we're in DEBUG mode, allow django to serve media
# This is considered inefficient and isn't secure.
from django.conf import settings
if settings.DEBUG:
    urlpatterns += patterns('',
        (r'^media/(?P<path>.*)$', 'django.views.static.serve',
         {'document_root': settings.GALLERY_ROOT}),
    )
...