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

如何在JavaScript中使用Django后端模板变量all_classes

在JavaScript中使用Django传递的all_classes数据

下面介绍几种实用的方法,让你能在JavaScript中直接使用Django视图传递的all_classes数据:

方法1:使用Django的json_script模板标签(推荐)

这是Django官方推荐的安全方式,适用于Django 2.1及以上版本:

  • 在HTML模板的</body>标签前添加代码,将数据序列化为安全的JSON并嵌入DOM:
    {{ all_classes|json_script:"all-classes-data" }}
    
  • 在JavaScript文件或<script>标签中读取数据:
    // 解析DOM中的JSON数据
    const allClasses = JSON.parse(document.getElementById('all-classes-data').textContent);
    
    // 示例:遍历输出所有班级名称
    allClasses.forEach(classItem => {
        console.log(classItem.class_name);
    });
    

优势:自动处理特殊字符转义,避免XSS风险,支持复杂数据结构

方法2:直接在模板中定义JavaScript变量

如果数据结构简单,可直接将序列化后的Python数据注入JS变量:

  • 先在Django视图中把QuerySet序列化为JSON字符串:
    import json
    from django.shortcuts import render
    
    def your_view(request):
        # 假设all_class是从数据库获取的QuerySet
        all_classes_json = json.dumps([{"class_name": cls.class_name} for cls in all_class])
        return render(request, "class.html", {'all_classes': all_classes_json})
    
  • 在HTML模板中添加<script>标签定义JS变量:
    <script>
        const allClasses = {{ all_classes|safe }};
    </script>
    
  • 之后就能在任意JavaScript代码中直接使用allClasses数组。

方法3:通过隐藏DOM元素存储数据

将数据存入隐藏的DOM属性,再用JS读取:

  • 在HTML中添加隐藏元素:
    <div id="classes-container" style="display: none;" data-classes='{{ all_classes|json_script:""|safe }}'></div>
    
  • 在JavaScript中读取属性值并解析:
    const classesContainer = document.getElementById('classes-container');
    const allClasses = JSON.parse(classesContainer.dataset.classes);
    

内容的提问来源于stack exchange,提问作者Ram Dayal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 05:40:37