django-photologue создает неправильные URL для фотографий
Я установил django-photologue и добавил несколько фотографий в базу данных. Кажется, что базовая механика сайта работает нормально, за исключением того, что не отображаются фотографии или эскизы. Изображения и миниатюры находятся в.. \ django \ media \ photologue \ photos.
Для страницы photo_detail результирующий источник HTML выглядит следующим образом:
<title>Greece 3</title>
<h1>Greece 3</h1>
<div class="gallery-photo">
<a href="photologue/photos/greece003.jpg"><img src="photologue/photos/cache/greece003_display.jpg" alt="Greece 3"/></a>
<p>no caption yet</p>
</div>
<h2>This photo is found in the following galleries:</h2>
<ol>
<li>
<a title="Greece 2" href="/photologue/photo/greece-2/"><img src="photologue/photos/cache/greece002_thumbnail.jpg"/></a>
<a href="/photologue/gallery/greece/">LSB Photos - Greece</a>
<a title="Greece 4" href="/photologue/photo/greece-4/"><img src="photologue/photos/cache/greece004_thumbnail.jpg"/></a>
</li>
</ol>
Похоже, файлы img src не попадают в нужное место и поэтому не отображаются. Я думаю, что MEDIA_ROOT и MEDIA_SITE верны, а медиа для других приложений работают так, как я ожидал.
>>> import settings
>>> settings.MEDIA_ROOT
'c:/design.ed/django/media/'
>>> settings.MEDIA_URL
''
И вот что дает сам модуль фотолога.
>>> from photologue import models as phl
>>> phl.PHOTOLOGUE_DIR
'photologue'
>>> phl.PHOTOLOGUE_PATH
>>> phl.get_storage_path(None, 'foo.jpg')
'photologue\\photos\\foo.jpg'
Что мне здесь не хватает?
1 ответ
Я думаю, что ответил на свой вопрос. Проблема не имела ничего общего с фотологом: скорее, settings.MEDIA_URL не был установлен правильно (потому что я никогда раньше не обслуживал медиа через Django).
В моем случае я работал локально, используя сервер Django по умолчанию (что я знаю, что вы не должны делать для производства). Так что у меня было это в моем urls.py:
(r'^site_media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': MEDIA_ROOT, 'show_indexes': True}),
но MEDIA_URL была пустой строкой по умолчанию. Вместо этого я изменил это на
MEDIA_URL = '/site_media/'
это то место, где он должен быть (в этом случае требуются как ведущий, так и конечный слеш), и вся магия сработала. Извиняюсь за помутнение вопроса деталями фотолога.