Django子模板中静态JS文件URL含%20导致404错误求助
Django静态文件加载问题:子模板scripts块中index.js报404
问题详情
基础模板core/layout.html的scripts区块代码如下:
<script type="text/javascript" src="{% static "core/js/tinymce/tinymce.min.js" %}"></script> <script src = "{% static "core/js/flowbite.min.js" %}"></script> <!-- <script src = "{% static "core/js/index.js" %}"></script> --> {% block scripts %}{% endblock scripts %}
将index.js移至子模板的scripts区块后,出现404错误:
GET 127.0.0.1:8000/static/%20core/js/index.js net::ERR_ABORTED 404 (Not Found)
子模板对应代码:
{% block scripts %}<script src="{% static 'core/js/index.js' %}"></script>{% endblock scripts %}
settings.py相关配置:
STATIC_URL = 'static/' STATIC_ROOT = os.path.join(BASE_DIR, "static") MEDIA_URL = "media/" MEDIA_ROOT = os.path.join(BASE_DIR, "media")
解决步骤
- 清除URL中的多余空格:错误URL里的
%20对应空格,检查子模板中src=后面是否有多余空格,将src = "..."改为src="...",确保无额外空格干扰URL生成。 - 加载static模板标签:在子模板最顶部添加
{% load static %},否则static标签无法解析,会直接输出原始字符串导致URL错误。 - 核对文件路径与名称:确认
index.js确实存在于BASE_DIR/static/core/js/路径下,文件名大小写完全匹配(Linux环境下Django区分文件名大小写)。 - 生产环境重新收集静态文件:如果是生产环境,执行
python manage.py collectstatic,确保所有静态文件被复制到STATIC_ROOT目录。 - 检查区块拼写一致性:确认子模板中
{% block scripts %}的写法和基础模板完全一致,避免因拼写错误导致区块未被正确覆盖。
内容的提问来源于stack exchange,提问作者user25395566
相关产品推荐
相关产品推荐

