Django静态文件加载失败:dynamic-formset.js无法运行且报404错误
解决静态JS文件404及无法运行的问题
嘿,这个404报错指向很明确——服务器压根找不到你的dynamic-formset.js和jquery-3.3.1.js文件!咱们一步步排查解决:
先确认文件的实际位置是否匹配路径
你得先核对项目里的文件结构:- 如果是用Django默认的app内静态文件,那文件路径应该是
你的app名称/static/js/dynamic-formset.js和你的app名称/static/js/jquery-3.3.1.js; - 如果是项目根目录下的全局静态文件夹,那得确保文件放在
项目根目录/static/js/下面。
另外要注意大小写问题,Linux服务器对文件名大小写敏感,别把JQuery-3.3.1.js写成了jquery-3.3.1.js这类错误。
- 如果是用Django默认的app内静态文件,那文件路径应该是
检查Django的静态文件配置是否正确
打开项目的settings.py文件,逐一确认:- 确保
INSTALLED_APPS里包含django.contrib.staticfiles(这个默认是自带的,但最好检查下); - 确认
STATIC_URL = '/static/'(如果你改了这个值,模板里的{% static %}标签也要对应调整); - 如果用了项目根目录的
static文件夹,要在settings.py里添加STATICFILES_DIRS配置:STATICFILES_DIRS = [ BASE_DIR / "static", ] - 开发环境下要保证
DEBUG = True,因为当DEBUG=False时,Django不会自动托管静态文件,需要手动收集。
- 确保
调整JS文件的加载顺序
你现在的代码是先加载dynamic-formset.js再加载jQuery,但如果dynamic-formset.js依赖jQuery的话,这会直接导致JS无法运行(因为先加载的脚本找不到jQuery对象)!正确的顺序应该是先加载jQuery,再加载依赖它的动态表单脚本:<script src="{% static 'js/jquery-3.3.1.js' %}"></script> <script src="{% static 'js/dynamic-formset.js' %}"></script>开发环境下可尝试手动收集静态文件
虽然DEBUG=True时Django会自动找静态文件,但有时候手动运行collectstatic能解决识别问题:python manage.py collectstatic运行时会提示是否覆盖文件,确认即可,这会把所有分散的静态文件统一收集到
STATIC_ROOT指定的目录(前提是你配置了STATIC_ROOT)。
按照上面的步骤逐一排查,先解决404的文件路径问题,再修正加载顺序,你的动态表单脚本应该就能正常运行了。
内容的提问来源于stack exchange,提问作者Elroum
相关产品推荐
相关产品推荐

