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

Django项目部署到生产服务器后上传的图片无法显示问题求助

Django生产环境自定义上传媒体文件无法访问解决方法

核心原因:Django 自带的 static() 路由辅助函数仅在 DEBUG = True 的开发模式下生效,生产环境关闭DEBUG后,你在urls.py中添加的媒体路由会自动失效,Django默认不会处理静态资源的分发,需要由前端Web服务器(Nginx/Apache)接管媒体文件的请求处理。

解决步骤

  • 第一步:配置Web服务器的媒体路径规则
    以最常用的Nginx为例,在你的站点配置文件中添加如下规则,注意替换成你自己的项目media文件夹绝对路径:
    location /media/ {
        alias /你的项目绝对路径/media/;
        expires 30d; # 可选,设置媒体文件缓存时间
    }
    
    配置完成后重载Nginx配置生效:nginx -s reload
    如果用的是Apache,需要配置Alias规则指向media目录,同时开放目录访问权限。
  • 第二步:检查模板路径渲染写法
    确保模板中渲染媒体文件时,使用Django提供的url属性获取路径,不要硬编码:
    <!-- 正确写法 -->
    <img src="{{ your_model.image_field.url }}" alt="图片">
    
  • 第三步:排查文件权限问题
    如果你通过自定义逻辑上传的文件所属用户/组和Web服务器运行用户(通常为www-data)不一致,也会出现访问被拒的404错误,可执行如下命令统一media目录权限:
    sudo chown -R www-data:www-data /你的项目绝对路径/media/
    sudo chmod -R 755 /你的项目绝对路径/media/
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 09:36:10