Правильный способ отображения изображений в ReactJS из статических файлов Django
Я создаю приложение с использованием ReactJS, Django, Heroku и в качестве хранилища использую Amazon S3.
Когда я запускаю python manage.py collectstatic
, все работает как надо. Все мои статические файлы загружаются в мой bucket.
Однако до сих пор в своем коде ReactJS я обращался к статическим изображениям следующим образом:
<img className={"some-class"} src={"staticfiles/images/image.png"}/>
И, конечно, на моем локальном хосте это будет работать. Однако эта строка всегда будет пытаться загрузить актив из моего локального хранилища. Как правильно обращаться к файлам моего ведра S3 на производстве и продолжать ссылаться на локальное хранилище при разработке?
Вот мои настройки для производства:
# ... all the keys and etc. are there.
AWS_S3_CUSTOM_DOMAIN = f'{AWS_STORAGE_BUCKET_NAME}.s3.amazonaws.com'
AWS_S3_OBJECT_PARAMETERS = {'CacheControl': 'max-age=86400'}
# s3 static settings
AWS_LOCATION = 'static'
STATIC_URL = f'https://{AWS_S3_CUSTOM_DOMAIN}/{AWS_LOCATION}/'
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
# s3 public media settings
PUBLIC_MEDIA_LOCATION = 'media'
MEDIA_URL = f'https://{AWS_S3_CUSTOM_DOMAIN}/{PUBLIC_MEDIA_LOCATION}/'
DEFAULT_FILE_STORAGE = 'myApp.storage_backends.PublicMediaStorage'
А это для моей локальной разработки:
STATIC_URL = '/staticfiles/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
... и, конечно же, в конце:
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'staticfiles')]
Мои .css файлы правильно загружаются из ведра S3. Однако я не уверен, как обращаться к файлам внутри JSX. Я искал в Google налево и направо и чувствую, что застрял на данный момент. Любая помощь будет оценена по достоинству!
Спасибо!