Служить медиафайлам Django локально в среде разработки - PullRequest
0 голосов
/ 15 октября 2019

Я использую Amazon S3 для хранения своих медиафайлов в рабочей среде с использованием пакета boto3, но я не хочу создавать сегмент для локальной среды разработки. Поэтому мне было интересно, есть ли способ обслуживать медиа-файлы локально.

Мои настройки, связанные с хранением:

if USE_S3:
    # aws settings
    AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID')
    AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY')

    AWS_STORAGE_BUCKET_NAME = os.environ.get('BUCKET_NAME')
    AWS_S3_REGION_NAME = os.environ.get('BUCKET_REGION')
    DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

STATIC_URL = '/django_static/'
STATIC_ROOT = os.environ.get('DJANGO_STATIC_ROOT')

MEDIA_URL = '/media/'
if not USE_S3:
    MEDIA_URL = "http://localhost:8000" + MEDIA_URL
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

В URL я добавил это:

urlpatterns = [
    # usual urls...
]

if not settings.USE_S3:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Оказывается, метод static возвращает пустой массив, если его первый параметр содержит 'http', что означает, что я не могу использовать его для обслуживания с моего сервера.

Если вы столкнулись с той же проблемой и решили ееили вы знаете, где искать решение, пожалуйста, дайте мне знать.

1 Ответ

0 голосов
/ 15 октября 2019

Моя ошибка, я забыл, что шаблоны URL являются относительными, поэтому мне просто нужно было изменить

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

на это:

urlpatterns += static('/media/', document_root=settings.MEDIA_ROOT)`
...