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

Django项目静态文件加载报404错误,多次尝试仍未解决

Django静态文件加载失败问题排查

我谷歌搜了各种解决方法都没用,之前开发的另一个Django项目没出现过这个问题,完全搞不懂当前项目报错的原因。

相关代码

urls.py

from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static

from . import views

urlpatterns = [
    path("admin/", admin.site.urls),

    path("", views.HomeView.as_view(), name = 'home'), # 指向home.html
    path("blog/", include('blog.urls')),
]
# urlpatterns += static(settings.STATIC_URL,document_root=settings.STATIC_ROOT) 

settings.py

# 静态文件(CSS、JavaScript、图片)
# https://docs.djangoproject.com/en/4.1/howto/static-files/

STATIC_URL = "static/"
STATICFILES_DIR = (os.path.join(BASE_DIR, 'static'),)
# STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR),"static")

home.html

<img src="{% static 'assets/img/navbar-logo.svg' %}" alt="..." />

项目目录结构

Project-folder
|
|__config
|  |__settings.py
|  |__urls.py
|
|__app
|
|__template
|  |__app
|  |  |__bla.html
|  |__home.html
|
|  # bootstrap相关文件
|__static
   |__assets
      |__img
...

可能的解决点

  • 修正STATICFILES_DIRS拼写:settings里的配置项写错了,应该是STATICFILES_DIRS(末尾带S),Django只会识别这个正确的变量名来加载自定义静态文件夹。修改后代码:
    STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)
    
  • 模板加载static标签:在home.html的最顶部添加{% load static %},否则模板无法解析{% static %}标签,导致静态资源路径错误。
  • 确认BASE_DIR路径:检查settings.py里的BASE_DIR定义是否正确,对于当前项目结构,BASE_DIR应该指向Project-folder目录,比如:
    from pathlib import Path
    BASE_DIR = Path(__file__).resolve().parent.parent
    
  • 开发环境静态服务:确保settings里DEBUG = True,开发模式下Django会自动处理静态文件请求;如果是生产环境(DEBUG=False),需要取消注释STATIC_ROOT配置,并运行python manage.py collectstatic把所有静态文件收集到STATIC_ROOT指定的目录。

内容的提问来源于stack exchange,提问作者KimGyeongMin-KR

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 00:45:13