Джанго: Создание псевдонима в 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-адресах... еще раз спасибо, ребята:)

Другие вопросы по тегам