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

Django静态文件两类404错误求助:图片路径异常及文件夹访问问题

Django静态文件404问题排查与解决

现状更新

willeM_ Van Onsem提供的语法修复已经解决了图片路径被追加多余字符的问题,现在只剩普通的404错误。修复后发现更多文件都出现这类问题,说明daterangepicker文件夹并没有特殊性,问题是普遍存在的。

原问题回顾

在把一个主题集成到Django项目时,部分静态文件能正常访问,但之前遇到两类404错误:

1. 图片路径被追加无效字符(已修复)

模板里的代码:

<img class="rounded-circle" src="{% static 'sleek-bootstrap/source/assets/img/user/u6.jpg" alt="Image' %}">

对应的错误日志:

"GET /static/sleek-bootstrap/source/assets/img/user/u6.jpg%22%20alt%3D%22Image 404 1958

实际文件/static/sleek-bootstrap/source/assets/img/user/u6.jpg是存在的,但Django把" alt="Image的URL编码(%22%20alt%3D%22Image)加到了路径后面,导致找不到文件。所有图片都有这个问题,现已通过语法修复解决。

2. 特定目录文件无法访问(现已确认非特例)

模板代码:

<script src="{% static 'sleek-bootstrap/source/assets/plugins/daterangepicker/moment.min.js' %}"> ></script>

错误日志:

"GET /static/sleek-bootstrap/source/assets/plugins/daterangepicker/moment.min.js HTTP/1.1" HTTP/1.1" 404 1958

一开始以为只有daterangepicker子文件夹里的文件访问不了,/static/sleek-bootstrap/source/assets/plugins/下的其他文件都正常,但修复图片问题后发现更多目录都有404,说明这个文件夹没特殊问题,是普遍的静态文件访问问题。

排查与解决步骤

针对当前的普通404问题,按以下步骤检查:

  • 核对静态文件配置:打开settings.py,确认STATIC_URL、STATIC_ROOT(生产环境)、STATICFILES_DIRS(开发环境)的配置是否正确,确保Django能找到所有静态文件所在的目录。
  • 重新收集静态文件:如果是生产环境,执行python manage.py collectstatic,把所有静态文件同步到STATIC_ROOT指定的目录;开发环境下确保runserver已开启静态文件服务(默认开启,可检查INSTALLED_APPS里是否包含django.contrib.staticfiles)。
  • 检查路径大小写:在Linux/macOS系统下,文件路径区分大小写,模板里的路径要和实际文件系统里的完全一致,比如Daterangepicker和daterangepicker会被视为不同路径。
  • 确认文件权限:确保Web服务器(如Nginx、Apache)或Django开发服务器有读取静态文件目录及文件的权限,避免因权限不足导致无法访问。
  • 清空浏览器缓存:浏览器可能缓存了旧的无效路径,试试用无痕模式打开页面,或清空缓存后再访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 22:07:37