-
Проблема следущая. Шаблон берет всю медию через media_url. В Opere все отображается коректно. В Mozille не отображаются картинки, хотя по прямому пути все находится.
В debug_toolbar в заголовках, в разных браузерах джанга передает разный ключ HTTP_ACCEPT и для файрфокса как раз не передается image/png, image/jpeg, image/gif.
Подкиньте мыслишек, в чем может быть проблема? -
Через что отдаётся сама картинка? Откуда в шаблоне берётся её урл - это не важно. И что прописано в HTTP_ACCEPT - не так важно. Важно, чтобы в http-ответе был правильный Content-type.
Если картинку (как и всю статику) отдаёт сервер (что правильно), то его просто надо настроить, а джанга тут не при чём, а если зачем-то сам файл картинки по её урлу отдаётся джангой, то для начала Content-type можно правильно прописать руками в responce.
-
Картинка отдается сервером
(r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}),
Что самое интересное картинки в фф не отображаются и на джанговском встроенном веб_сервере так и на связке apache + mod_wsgi + django -
Андрей, ведь у Вас ADMIN_MEDIA_PREFIX=/media/ ?
-
превикс админки /admin_media/.
-
Что самое интересное картинки в фф не отображаются и на джанговском встроенном веб-сервере так и на связке apache + mod_wsgi + django
Если отдавать через джанговский views.static.serve в URLconf, то разницы и не должно быть. Сервер отдаёт тот http-ответ, который для него готовит джанго, так что не важно, что это за сервер, apache + mod_wsgi или встроенный однопоточник.
Во первых, попробуйте в апаче настроить выдачу картинок напрямую, минуя джанго.
Если вам принципиально использовать views.static.serve, то сделайте для него обёртку, которая в готовый responce будет прописывать правильный Content-type.
-
Вообще, по уму функция serve() должна сама прописывать Content-type (точнее, только mimetype, но для картинок это одно и то же) правильно, но она его берёт из реального файла примерно вот так:
mimetype = mimetypes.guess_type(fullpath)[0] or 'application/octet-stream'Посмотрите, какой ответ (с каким Content-type) приходит в Firefox? Если правильный - проблема у вас в браузере. Если неправильный, то можно посмотреть, что в шелле вычислится из пути к картинке в mimetypes.guess_type.
Но это всё баловство: на продакшн полюбому надо ставить отдельную выдачу статики из апача минуя джангу, а девелопмент-сервер можно и оперой посмотреть, если лень искать источник проблемы.
-
Путь до статики формируется из базы <img src="{{media_url}}{{item.client.logo}}"/>
Как я понимаю выдача статики минуя джангу не выйдет? -
Путь до статики формируется из базы <img src="{{media_url}}{{item.client.logo}}"/> Как я понимаю выдача статики минуя джангу не выйдет?
Андрей, не сочтите за наезд, но вам, похоже, стоит немного повникать в то, как работает http.
Дело в том, что не имеет абсолютно никакого значения, откуда и чем формируется урл, если он, в конце концов, сформирован правильно. Посмотрите в исходном тексте страницы, которая вам в браузер пришла, правильные там урлы? Если нет, то http-хэдеры тут не при чём и надо дебажить формирование строки урла, а если да, то джангу можно оставить в покое.
Браузер в один запрос получает с сервера html-страницу, которую делает джанга и в которой прописаны урлы. Картинки по этим урлам браузер получает отдельными запросами (по одному на картинку), которые вовсе не обязательно обрабатывать джангой. Можно настроить сервер (апач, нгинкс, лайти... не важно), чтобы он урлы картинок обрабатывал сам, тупо отдавая файлы, а урлы динамических страниц отдавал на обработку джанге, и уже результат джанговой обработки возвращал браузеру. Разумеется, это имеет смысл делать только на продакшене, а на девелопменте можно использовать временные костыли в виде views.static.serve, но это просто заглушка для тестового режима. Её проще проигнорировать, чем раздебажить.
Вообще, из спортивного интереса можно докопаться до корня проблемы и заставить всё работать так, как вы хотели изначально, но с теми данными, которые вы предоставляете это практически нереально.
-
Действительно как работает http до этого не вникал)) Сейчас поразбирался.
А до этого на продакшн версии статика раздовалась джангой. Сечас все поправил и все теперь раздается апачем. И сразу выскачила ошибка со слэшами, фикстуры были сделаны на виндоус.
Спасибо за помощь.)
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
