Django Admin, Amazon S3, Heroku отсутствует icon_calendar

Хорошо, я изучал Django, но я новичок в этом фреймворке. Я - фанат. У меня есть сборка, работающая на heroku, со статическими файлами, обслуживаемыми Amazon S3 с использованием хранилищ Django. Было очень легко приступить к работе без каких-либо трудностей.

Однако мне не хватает значков календаря. Проверка источника показывает, что между admin и img нет конечной косой черты.

Пример:

https://s3.amazonaws.com/heroku-sdbhvaehv/adminimg/icon_clock.gif

Очевидно, это ошибка в перечисленных здесь хранилищах Django:

http://code.larlet.fr/django-storages/issue/121/s3boto-admin-prefix-issue-with-django-14

И я безуспешно реализовал различные исправления, перечисленные в комментариях.

Я нашел два сообщения в SO и в группах Google, но решений нет.

При использовании Django и s3boto некоторые изображения администратора (icon_clock.gif и icon_calendar.gif) не отображаются

Итак - я ищу любые решения, как исправить этот значок. Меня не волнует, нужно ли мне что-то изменять после каждого нажатия или делать что-то еще, но у меня не может быть отсутствующего значка календаря.

Есть какая-нибудь помощь?


person warpedspeed    schedule 31.07.2013    source источник
comment
Этот хак, вероятно, не для начинающих, но можно ли добавить на страницы небольшой jquery-запрос? Перебрать все элементы img, проверить их атрибут src и исправить при необходимости? Связано: stackoverflow.com/questions/554273/   -  person jarmod    schedule 31.07.2013
comment
В крайнем случае, я думал об этом.   -  person warpedspeed    schedule 01.08.2013
comment
Или еще более хитроумно (yuk) сохраните копию icon_clock.gif на s3.amazonaws.com/ heroku-sdbhvaehv / adminimg?   -  person jarmod    schedule 01.08.2013
comment
Это может быть неприятно, но я пытаюсь исправить, а не решить мировые проблемы. Помещение изображения туда с файлом readme.txt меня устраивает. Спасибо за предложение. Я немного смущен, что не подумал об этом, пока работал над этой веткой.   -  person warpedspeed    schedule 05.08.2013


Ответы (1)


Проблема не в бото и не в django-хранилищах.

Проблема в том, что администратор django не использует тег {% static %}. Статический тег предполагает (правильно), что он просматривает весь URL-адрес и может изменять этот URL-адрес произвольно. Передавая только префикс, администратор django нарушает этот контракт (который не будет обнаружен в простейших случаях, но будет большой проблемой, когда вы попытаетесь сделать что-нибудь более сложное.

Вы должны сообщить об ошибке или патче для django, чтобы явно передать все URL-адреса ресурсов в статический тег и выгрузить эти полные URI ресурсов в контекст javascript.

РЕДАКТИРОВАТЬ: это решение должно работать для вас: http://code.larlet.fr/django-storages/issue/121/s3boto-admin-prefix-issue-with-django-14#comment-1604389

Просто убедитесь, что для AWS_QUERYSTRING_AUTH установлено значение False, иначе вы получите зажатые в него строки запроса.

person Thomas    schedule 31.07.2013
comment
+1 за комментарий. Есть ли какое-нибудь исправление, которое я могу сделать тем временем? - person warpedspeed; 01.08.2013
comment
Спасибо. Я пробовал оба этих решения, но без исправлений. Я еще раз просмотрю их сегодня и посмотрю, что я сделал не так. - person warpedspeed; 05.08.2013
comment
какой результат вы получите, если будете использовать их вместе? - person Thomas; 06.08.2013
comment
Это исправлено в текущей разрабатываемой версии. См. stackoverflow.com/a/18698270/284318 - person Danilo Bargen; 09.09.2013