Как я могу изменить URL для загруженных файлов?
У меня проблема с путем для открытия файлов. Мои файлы сохранены на s3 amazon, и url для них https://certsstorenordic.s3.eu-west-3.amazonaws.com/certificate/2022/11/28/Coffee_Maker_64753-001-003_SN_13-09-4222.pdf. Однако когда я пытаюсь открыть его с моего сайта, он открывается как http://127.0.0.1:8000/certificate/2022/11/28/Ceiling_Light_PN_4041-70_SN_31907.pdf. Как изменить начало url для загруженных файлов? Мой MEDIA_URL в settings.py не работает.
Мой urls.py:
urlpatterns = []
if settings.DEBUG: urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Settings.py:
WS_S3_CUSTOM_DOMAIN = f'{AWS_STORAGE_BUCKET_NAME}.s3.eu-west-3.amazonaws.com'
STATIC_URL = '/static/'
STATIC_ROOT = BASE_DIR / 'static'
MEDIA_URL = f'https://{AWS_S3_CUSTOM_DOMAIN}/'
MEDIA_ROOT = BASE_DIR / 'media'
models.py:
certificate = models. FileField(upload_to='certificate/%Y/%m/%d/', blank=True, null=True)
html:
{% for i in response %}
<tr>
<td>{{i.component.description}}</td>
<td><a href="{{ i.certificate }}">Download</a></td>
</tr>
{% endfor %}
Вы можете использовать boto3 config для загрузки вашего файла и это не добавит http://127.0.0.1:8000/ к вашему базовому URL.
from storages.backends.s3boto import S3BotoStorage
class PublicMediaStorage(S3Boto3Storage):
location = "media"
default_acl = "public-read"
file_overwrite = False
custom_domain = False
А затем используйте вышеуказанный класс в model
для storage=PublicMediaStorage()
. В вашем случае это будет выглядеть как
certificate = models. FileField(storage=PublicMediaStorage(), upload_to='certificate/%Y/%m/%d/', blank=True, null=True)