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

如何在静态JavaScript中展示Django后台问题?JS文件需怎么修改?

如何在JS中展示Django后台管理的问题?

嘿,我来帮你搞定这个问题~ 你现在的JS里是硬编码的问题内容,要换成Django后台的动态数据,得按这几步来:

1. 给Django模板加个数据传递桥梁

首先要在你的index.html里,把后端视图传过来的question查询集转换成前端JS能安全读取的格式。Django自带的json_script过滤器刚好能完成这个工作:

<!-- 在index.html的</body>标签之前添加这段代码 -->
{{ question|json_script:"questions-data" }}

<script>
// 解析从Django传递过来的JSON格式问题数据
const questions = JSON.parse(document.getElementById('questions-data').textContent);
</script>

2. 更新你的JS文件

把原来硬编码的let questions = [...]代码删掉,直接用上面解析出来的questions数组就行。注意你的Django模型Question目前只有name字段,对应JS里的question属性,所以遍历数据时要对应字段:

// 示例:遍历问题数组,把内容渲染到页面
questions.forEach(questionItem => {
    // questionItem.name就是你在后台添加的问题内容
    console.log('当前问题:', questionItem.name);
    // 你可以根据需求把问题、选项等内容渲染到页面DOM中
});

3. 补全模型字段(关键步骤)

看你JS里的问题结构包含choiceA、choiceB、choiceC和correct,但你的Django模型只有name字段,这会导致前端拿不到选项数据。得先把模型补全:

# 修改models.py中的Question类
class Question(models.Model):
    name = models.CharField(max_length=300)  # 问题内容
    choice_a = models.CharField(max_length=300)  # 对应JS里的choiceA
    choice_b = models.CharField(max_length=300)  # 对应JS里的choiceB
    choice_c = models.CharField(max_length=300)  # 对应JS里的choiceC
    correct_choice = models.CharField(max_length=1)  # 对应JS里的correct,存"A"/"B"/"C"

修改模型后,别忘了执行数据库迁移命令,让字段生效:

python manage.py makemigrations
python manage.py migrate

这样你在Django admin里添加问题时,就能填写完整的选项和正确答案,前端JS也能拿到完整的问题数据啦~

内容的提问来源于stack exchange,提问作者Alphonse Prakash

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 14:12:39