Azure 上的 Django 应用程序错误地从 Azure Blob 加载静态文件

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

此 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 操作部署。还是同样的问题。

我还在设置文件中尝试了一些黑客式的解决方法,但没有成功。

最佳答案

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

    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了解更多详情

关于Azure 上的 Django 应用程序错误地从 Azure Blob 加载静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69545771/

相关文章:

django - RuntimeError : Database access not allowed, 使用 "django_db"标记,或 "db"或 "transactional_db"设备来启用它

python - Django,类 View : How can I save session data with a form's object?

django - 如何隐藏django服务器打印的消息

Azure 应用服务问题 - 500.79 内部服务器错误

asp.net - Azure 网站实例到底是什么

python - 上传文件在 Django 中无法正常工作

Azure 数据工厂 v2 - SSIS 提升和转移

python - 无法从 Azure 事件中心写入 CosmosDB

azure - 使用 Azure Kubernetes 在端口 80 上运行 Spring Boot

azure - 如何在 Azure WebApps 上部署多个应用程序