You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 22:12:40