DEBUG=False时Django后台站点favicon触发SuspiciousFileOperation错误
解决Django DEBUG=False时Favicon加载的SuspiciousFileOperation异常
问题原因
DEBUG=True时Django会自动处理静态文件的查找和服务,但切换到DEBUG=False后,Django依赖collectstatic收集到STATIC_ROOT的静态文件提供服务。你的问题出在两个地方:
- 模板中
{% static '/img/favicon.ico' %}的路径开头多了斜杠,导致Django解析时跳过STATIC_ROOT,直接从系统根目录查找D:\img\favicon.ico,超出了允许的路径范围。 - 未执行
collectstatic将静态文件同步到STATIC_ROOT指定的staticfiles目录。
解决方案
修正模板路径
修改templates/admin/base_site.html中的favicon引用,去掉路径开头的斜杠:{% extends "admin/base_site.html" %} {% load static %} {% block extrahead %} <link rel="shortcut icon" href="{% static 'img/favicon.ico' %}" /> {% endblock %}{% static %}标签会自动拼接STATIC_URL(即/static/),正确路径会解析为/static/img/favicon.ico。确认文件位置
确保favicon.ico放在项目的static/img/目录下,对应路径为:D:\Social_login\static\img\favicon.ico。执行静态文件收集命令
在终端运行以下命令,将STATICFILES_DIRS中的静态文件复制到STATIC_ROOT指定的staticfiles目录:python manage.py collectstatic执行后,
staticfiles/img/favicon.ico会被生成,Django在DEBUG=False时就能正确找到该文件。配置生产环境静态文件服务
DEBUG=False时Django不再提供静态文件服务,需要通过Web服务器(如Nginx、Apache)配置/static/路径指向staticfiles目录,确保浏览器能正常访问静态资源。
内容的提问来源于stack exchange,提问作者Istiyak Shaikh
相关产品推荐
相关产品推荐

