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

Django出现Not Found:/polls/style.css 404错误排查与修复

问题根因

三个报错属于连锁触发,核心问题共两点:

  • STATICFILES_DIRS配置指向的静态目录物理不存在,触发staticfiles.W004警告
  • 静态文件存放路径不符合Django约定、模板中硬编码错误的引用路径,触发两个404 Not Found报错
分步修复方案

1. 调整静态文件目录结构,修正settings配置

Django对静态文件的查找路径有明确约定,优先按app维度存放静态文件,不要随意创建自定义目录:

  • 正确的app内静态文件目录结构如下,必须在app目录下创建名为static的文件夹,内部再加一层和app同名的子目录,避免多app静态文件重名覆盖:
项目根目录/
├── manage.py
├── 项目配置目录(存放settings.py的文件夹)
└── polls/
    ├── migrations/
    ├── templates/
    │   └── polls/
    │       └── index.html
    └── static/
        └── polls/
            └── style.css  # 把你的css文件移到这个位置,不要错放到images目录
  • 打开settings.py检查静态配置:如果静态文件都存放在各个app自身的static目录下,直接注释掉你之前写错的STATICFILES_DIRS配置即可,Django默认会自动扫描每个app下的static目录,W004警告会直接消失。
  • 只有存放项目级公共静态文件(比如全站通用的favicon、公共css)时,才需要配置STATICFILES_DIRS,示例配置如下:
STATIC_URL = "static/"
# 项目级公共静态文件才需要加以下配置,app私有静态文件无需配置
# STATICFILES_DIRS = [
#     BASE_DIR / "common_static",
# ]

2. 修正模板中的静态文件引用

绝对不要在模板里硬编码静态文件路径,必须使用Django内置的static模板标签自动拼接路径:
打开polls/templates/polls/index.html,按如下方式修改:

<!-- 模板最顶部第一行必须加这行,加载static标签,遗漏会导致模板渲染报错 -->
{% load static %}
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Polls Index</title>
    <!-- 删除你之前写的/polls/static/polls/images/style.css、/polls/style.css这类硬编码路径,替换为下面的标签 -->
    <link rel="stylesheet" href="{% static 'polls/style.css' %}">
</head>
<body>
<!-- 原有页面内容保持不变 -->
</body>
</html>

之前出现两个404的原因:硬编码路径没有加Django默认的/static/路由前缀,且错误把css文件放到了images目录下,用{% static %}标签会自动补全正确前缀,不需要手动拼接路径。

3. 验证修复结果

  • 按Ctrl+C停掉之前的开发服务,重新执行python manage.py runserver启动,确认控制台不再出现staticfiles.W004警告
  • 访问对应页面,打开浏览器开发者工具的网络面板,确认style.css的请求路径为/static/polls/style.css,返回状态码200即修复成功

注意:python manage.py collectstatic是生产环境部署时才需要执行的命令,开发阶段不需要运行,执行不当反而会打乱本地静态文件目录。

内容的提问来源于stack exchange,提问作者Костя Кіріяк

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 09:33:38