Django路径未按预期工作,flashcard.html无法加载引用的data.json文件
Django模板引用JSON文件失败解决方法
问题根因
- Django 模板引擎的
{% include %}标签仅会搜索settings.py中TEMPLATES配置项DIRS参数指定的模板目录,你的data.json存放在项目根目录,不在模板搜索路径范围内,因此所有路径配置均无法生效。 - 本地绝对路径
D:\xxx\data.json无法使用:浏览器存在安全限制禁止直接访问本地磁盘文件,Django运行时也不会直接读取本地文件系统的绝对路径。
解决方案(二选一即可)
方案一:直接嵌入JSON到模板(适合小项目,操作简单)
- 将
data.json文件移动到你的templates目录下,和flashcard.html放在同一目录 - 修改JS中
mydata的赋值代码,添加safe过滤器防止Django自动转义JSON内容:
let mydata = {% include 'data.json' | safe %}
- 可选优化:将写死的卡片总数改为动态读取JSON长度,避免手动修改:
let totalCards = mydata.questions.length
方案二:通过静态资源管理引入(更规范,适合生产环境)
- 确认
settings.py配置:INSTALLED_APPS列表包含django.contrib.staticfiles- 已配置
STATIC_URL = '/static/'
- 在你的应用目录下新建
static文件夹,将data.json放入该文件夹中 - 在
flashcard.html的第一行添加静态文件加载标签:
{% load static %}
- 替换原来的直接嵌入JSON的代码,用fetch请求获取静态JSON资源:
fetch("{% static 'data.json' %}") .then(response => response.json()) .then(mydata => { // 原有所有使用mydata的代码全部移动到该回调函数内 let frontSideFront = true let cardNum = 0 let totalCards = mydata.questions.length // 后续的卡片渲染、事件绑定代码保持不变 })
内容的提问来源于stack exchange,提问作者Prateek p
相关产品推荐
相关产品推荐

