Джанго: Создание псевдонима в urls.py для Amazon S3?
Я столкнулся с проблемой при настройке URL-адресов в Django.
Для обслуживания медиафайлов у меня есть эта корзина Amazon S3:
https://somebucket.s3.amazonaws.com/
Я установил медиа-адрес внутри settings.py
следующее:
MEDIA_URL = https://somebucket.s3.amazonaws.com/media/
Внутри urls.py
Я установил код следующим образом:
urlpatterns += patterns('',
(r'^media/(?P<path>.*)$', 'django.views.static.serve', {
'document_root': settings.MEDIA_URL}));
Я хочу сказать, что когда я указываю файл изображения из, скажем <img src="/media/image.jpg"/>
это будет автоматически указано на http://somebucket.s3.amazonaws.com/media/image.jpg
Как я могу это сделать? Я перепробовал много методов, но он всегда возвращает 404.
Однако, если я пытаюсь получить доступ к файлу напрямую http://somebucket.s3.amazonaws.com/media/image.jpg
оно работает.
2 ответа
Почему вы хотите это сделать? Это побеждает большую часть цели иметь внешнее хранилище во-первых. Это означает, что для каждого медиа-запроса он должен пройти сам Django, чтобы разрешить URL-адрес и сгенерировать перенаправление на S3 со всеми вытекающими отсюда издержками.
Вместо этого, как предлагает sneawo в комментариях, вы должны просто установить атрибут img src, чтобы он указывал на изображение через URL-адрес S3.
Оказалось, что django автоматически добавляет media_url перед url поля изображения.
у меня сложилось впечатление, что я должен добавить media_url, что заставило меня искать более простое решение.
Django Admin показывает только относительные пути
![Администратор django показывает относительные пути][1]
https://stackru.com/images/f8a5d42684d858a54733051e6cb67641e1c29ca3.png
Но вкусный пирог дает мне абсолютный путь
https://stackru.com/images/da34812dc0dd0335965238c20f8fec1af4e000f8.png
так что мне больше не нужно беспокоиться об URL-адресах... еще раз спасибо, ребята:)