Django模板无法识别base.html中BootStrap、jQuery静态文件报错求助
问题原因
- 你使用相对路径引用静态资源:模板中
src="js/jquery.min.js"这类写法会相对当前页面URL/auth/login/拼接路径,最终请求/auth/login/js/jquery.min.js,没有匹配到Django静态资源规则,导致404。 - 直接使用本地磁盘绝对路径引用资源:
C:\Users\marco\...这类路径只有你本地直接打开HTML文件时有效,部署到Django服务后,浏览器无法访问服务端的本地磁盘路径,Django也不会直接读取这类路径返回资源。 - 重复引入多版本jQuery:头部引入了两次CDN版jQuery,底部又引入了一次本地版jQuery,会产生版本冲突,导致JS功能异常。
解决步骤
- 整理静态文件目录
按照你settings.py中的配置,在项目根目录的templates文件夹下新建static文件夹,再在其中分别新建js、css、img三个子文件夹,把对应的静态资源放到对应目录下:
jquery.min.js、bootstrap.bundle.min.js放入js文件夹style.css放入css文件夹logo.png放入img文件夹
- 修改模板静态资源引用
在HTML模板的最开头添加静态资源加载标签:
{% load static %}
所有本地静态资源的引用都替换为Django静态模板语法:
<!-- 引用css --> <link rel="stylesheet" href="{% static 'css/style.css' %}"> <!-- 引用图片 --> <img src="{% static 'img/logo.png' %}" alt=""> <!-- 引用js --> <script src="{% static 'js/jquery.min.js' %}"></script> <script src="{% static 'js/bootstrap.bundle.min.js' %}"></script>
同时删除头部重复引入的多余jQuery,只保留一个版本即可。
- 配置开发环境静态资源路由
在项目根目录的urls.py中添加如下配置,让Django在开发模式(DEBUG=True)下可以正常提供静态资源服务:
from django.conf import settings from django.conf.urls.static import static urlpatterns = [ # 此处保留你原有所有的URL配置 ] + static(settings.STATIC_URL, document_root=settings.STATICFILES_DIRS[0])
补充说明
settings.py中的STATIC_ROOT配置是生产环境执行python manage.py collectstatic命令时,所有静态资源的统一收集目录,生产部署时用Nginx指向该目录即可,开发阶段不需要修改。
内容的提问来源于stack exchange,提问作者oScanner
相关产品推荐
相关产品推荐

