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
相关产品推荐
相关产品推荐

