Приложение Django на Azure некорректно загружает статические файлы из Azure Blob

Это приложение Django развернуто на Azure как App Service, его статические и медиафайлы хранятся в учетной записи хранилища Azure - blob.

Раньше проект работал хорошо, но что-то изменилось, и теперь проблема заключается в следующем.

Релевантная часть файла настроек приложения:

STATIC_URL = 'https://myappstorage.blob.core.windows.net/static/'
MEDIA_URL = 'https://myappstorage.blob.core.windows.net/media/'


STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
# any static paths you want to publish
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')
]

поэтому можно ожидать, что, например, favicon, который находится в корневом каталоге хранилища, можно найти на https://myappstorage.blob.core.windows.net/static/favicon и это действительно так!

Но все статические файлы, которые приложение на azure пытается загрузить, оно пытается загрузить из

https://myappstorage.myappstorage.blob.core.windows.net/static/. (обратите внимание на дублирование myappstorage), то же самое для медиафайлов.

Это приводит к тому, что статические файлы не применяются к странице, поскольку они загружаются с неправильного url. Когда я запускаю приложение локально, оно работает нормально. Я уничтожил его и создал заново, безрезультатно. Теперь у меня работают две копии, одна развернута через FTP и команду запуска, а вторая - с помощью действия Github. Все та же проблема.

Я также пробовал небольшие хакерские обходные пути в файле настроек, но безуспешно. Сейчас я работаю над этим около 10 часов и нахожусь в самом отчаянии.

Любая помощь будет очень высоко оценена - заранее спасибо!

Попробуйте добавить нижеприведенные настройки приложения

    DEFAULT_FILE_STORAGE = 'backend.custom_azure.AzureMediaStorage'
    STATICFILES_STORAGE = 'backend.custom_azure.AzureStaticStorage'
    
    STATIC_LOCATION = "static"
    MEDIA_LOCATION = "media"
    
    AZURE_ACCOUNT_NAME = "djangoaccountstorage"
    AZURE_CUSTOM_DOMAIN = f'{AZURE_ACCOUNT_NAME}.blob.core.windows.net'
    STATIC_URL = f'https://{AZURE_CUSTOM_DOMAIN}/{STATIC_LOCATION }/'
    MEDIA_URL = f'https://{AZURE_CUSTOM_DOMAIN}/{MEDIA_LOCATION}

обратитесь к этому документу для получения более подробной информации

Вернуться на верх