【问题标题】:Django app on Azure incorrectly loading static files from an Azure BlobAzure 上的 Django 应用错误地从 Azure Blob 加载静态文件
【发布时间】:2021-12-01 08:37:20
【问题描述】:

此 Django 应用作为应用服务部署在 Azure 上,其静态和媒体文件存储在 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')
]

因此人们会期望,例如,位于存储根目录中的图标可以在 https://myappstorage.blob.core.windows.net/static/favicon 上找到,而且确实如此!

但是 azure 上的应用程序尝试加载的所有静态文件都会尝试从中加载

https://myappstorage.myappstorage.blob.core.windows.net/static/ (注意 myappstorage 的重复),对于媒体文件也是如此。

这会导致页面上没有静态文件,因为它们是从错误的 url 加载的。当我在本地运行应用程序时,它运行良好。我销毁它并重新创建它,但没有成功。现在我有两个副本正在运行,一个通过 FTP 和启动命令部署并使用 Github 操作。还是一样的问题。

我还在设置文件中尝试了一些 hack-ish 变通办法,但没有成功。

【问题讨论】:

    标签: django azure azure-web-app-service azure-blob-storage django-staticfiles


    【解决方案1】:

    尝试在应用设置中添加以下内容

        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}
    

    更多详情请参考document

    【讨论】:

      猜你喜欢
      • 2016-12-25
      • 1970-01-01
      • 2017-08-20
      • 1970-01-01
      • 2015-06-20
      • 2018-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多