Как я могу изменить 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)
Вернуться на верх