Django指定favicon时静态文件找不到,仅logo可正常加载
我正在开发第一个Django网站,碰到了静态文件加载的问题。首页用这段代码引入logo完全正常:
<img class="d-block mx-auto mb-4" src="{% static 'mysite/images/logo.png' %}" alt="" width="300" height="225">
但更换favicon时,用下面的代码引入静态文件夹里的png文件却找不到:
<link rel="shortcut icon" href="{% static '/mysite/images/logo.png' %}" >
除了logo.png之外,其他图片也都加载不出来,不知道原因在哪。我的settings.py配置如下:
STATIC_URL = 'static/' STATIC_ROOT = os.path.join(BASE_DIR, 'static')
项目文件夹结构(根据截图整理):
- 项目根目录
- mysite(项目核心配置目录)
- static
- images
- logo.png
- 其他待加载的图片文件
- images
- static
- 其他项目文件(如manage.py等)
- mysite(项目核心配置目录)
问题排查及解决办法
去掉路径开头的多余斜杠
favicon代码里的{% static '/mysite/images/logo.png' %}多了开头的斜杠,Django的static标签会自动拼接STATIC_URL,加斜杠会导致路径出现重复斜杠(变成static//mysite/images/logo.png),直接改成{% static 'mysite/images/logo.png' %}即可,和logo的引用格式保持一致。添加STATICFILES_DIRS配置
当前settings里只配置了STATIC_ROOT和STATIC_URL,但STATIC_ROOT是部署时收集静态文件的目录,开发阶段需要告诉Django去哪里找静态文件,所以要在settings.py里添加:
import os STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'mysite/static'), ]
这行代码指定Django去mysite目录下的static文件夹里找静态资源,和实际文件夹结构对应。
检查文件路径与文件名
确认其他图片的文件名、子路径是否正确,比如Linux/macOS系统下路径区分大小写,要保证代码里的路径和实际文件路径完全匹配,避免拼写错误。确认DEBUG模式状态
开发阶段确保settings里的DEBUG = True,Django在DEBUG模式下会自动处理静态文件的服务;如果改成False,需要额外配置静态文件的服务方式(仅生产环境需要)。
内容的提问来源于stack exchange,提问作者szabolcs_42

