Django项目无法找到templates目录下的图片资源该如何处理?
Django静态图片加载失败解决方案
你当前的核心错误是将图片资源存放在了templates目录下,该目录是Django专属的模板文件存储目录,默认不会对外开放静态资源访问权限,不管怎么写相对路径都无法正常加载。
第一步:调整静态资源存放路径
在你的应用目录mysite/app/下新建static文件夹,再在static目录内新建img子目录,将你的pic.png移动到mysite/app/static/img/pic.png路径下。
第二步:确认静态文件配置
打开项目全局配置文件mysite/mysite/settings.py,检查是否有以下配置:
# 静态资源访问路由前缀 STATIC_URL = 'static/'
Django默认会自动扫描每个应用下的static目录,单应用开发无需额外配置STATICFILES_DIRS。
第三步:修改HTML模板引用方式
- 首先在你的HTML文件最顶部添加静态资源标签加载声明:
{% load static %} - 替换img标签的src属性为Django模板语法生成的静态路径:
<img src="{% static 'img/pic.png' %}">
第四步:配置开发环境静态资源路由
打开项目全局路由文件mysite/mysite/urls.py,在原有路由列表末尾追加静态资源访问规则,仅开发调试模式(DEBUG=True)下需要该配置:
from django.conf import settings from django.conf.urls.static import static urlpatterns = [ # 此处保留你原有所有路由配置 ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
你之前直接写相对路径的写法不生效的原因:Django的模板是服务端渲染逻辑,浏览器访问的是渲染后的页面,直接写文件相对路径是浏览器基于当前页面的URL发起资源请求,不会对应你服务器本地的模板目录结构,加上templates目录本身没有配置访问权限,请求自然会404。
内容的提问来源于stack exchange,提问作者ReRed
相关产品推荐
相关产品推荐

