You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure部署的Django App加载Blob静态文件出现存储账户名重复问题

问题排查与解决步骤

1. 优先检查Azure App Service的应用配置项

登录Azure门户,进入对应App Service的「配置」-「应用程序设置」页,排查是否存在以下环境变量被误配置:

  • STATIC_URL/MEDIA_URL:如果此处配置了错误的带重复存储账户名的地址,会直接覆盖代码里settings.py的配置,优先级远高于本地代码
  • AZURE_ACCOUNT_NAME/AZURE_STORAGE_ACCOUNT/AZURE_CUSTOM_DOMAIN:如果你使用了django-storages这类Azure存储集成库,只要配置了上述变量,库会自动在静态资源URL前拼接存储账户域名,如果你已经在settings里写了带完整域名的STATIC_URL,就会出现重复拼接的问题。

2. 验证部署环境的实际配置值

通过App Service的SSH功能进入运行容器,执行以下命令确认运行时的STATIC_URL实际值:

# 进入Django项目根目录后启动shell
python manage.py shell

在shell中执行:

from django.conf import settings
print(settings.STATIC_URL)
print(settings.MEDIA_URL)
  • 如果输出的地址已经是带重复myappstorage的错误地址:说明配置被环境变量或其他导入的配置文件覆盖,直接排查上层配置覆盖逻辑即可
  • 如果输出的地址是正常的:继续排查下一步

3. 检查存储后端与模板渲染逻辑

  • 如果你使用了django-storages的Azure存储后端,确认是否同时配置了完整STATIC_URL和存储账户参数:如果已经指定了带完整域名的STATIC_URL,请删除所有AZURE_ACCOUNT_NAME/AZURE_CUSTOM_DOMAIN相关配置,避免重复拼接
  • 排查是否存在自定义中间件、上下文处理器对静态资源URL做了额外的前缀拼接处理

4. 通用修复方案

如果确认是django-storages的拼接逻辑冲突,可以换用官方推荐的配置方式,避免手动写死完整域名:

# 先配置存储账户参数,删除原有写死的STATIC_URL
AZURE_ACCOUNT_NAME = "myappstorage"
AZURE_STATIC_CONTAINER = "static"
AZURE_MEDIA_CONTAINER = "media"

STATIC_URL = f"https://{AZURE_ACCOUNT_NAME}.blob.core.windows.net/{AZURE_STATIC_CONTAINER}/"
MEDIA_URL = f"https://{AZURE_ACCOUNT_NAME}.blob.core.windows.net/{AZURE_MEDIA_CONTAINER}/"

内容的提问来源于stack exchange,提问作者David Louda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 02:54:04