📅  最后修改于: 2023-12-03 15:30:30.346000             🧑  作者: Mango
在 Web 开发中,我们经常需要将后端 Python 代码中的数据传递到前端 JavaScript 中进行操作和渲染。本文将介绍如何在 Django 中将列表数据传递给 JavaScript。
假设我们有一个视图函数,它从数据库中获取了一些数据,并将这些数据传递给模板:
from django.shortcuts import render
from myapp.models import MyModel
def my_view(request):
my_data = MyModel.objects.all() # 假设这里获取的数据是一个模型实例列表
return render(request, 'my_template.html', {'my_data': my_data})
在这个示例中,my_data
是一个模型实例列表,它将通过模板传递给前端 JavaScript。
在模板中,我们可以使用 JSON 序列化将 Python 中的列表转换为 JavaScript 中的数组。在 Django 中,可以使用内置的 json_script
模板标签将数据转换为 JSON 格式,并将其嵌入到 HTML 文档中:
{% extends "base.html" %}
{% block content %}
<h1>My data</h1>
<ul>
{% for obj in my_data %}
<li>{{ obj.name }}</li>
{% endfor %}
</ul>
{{ my_data|json_script:"my_data" }} <!-- 将 my_data 转换为 JSON,并将其嵌入到 script 标签里 -->
{% endblock %}
在这个示例中,我们使用了 Django 内置的 json_script
模板标签,它将 my_data
列表转换为 JSON 格式,并将其嵌入到一个 id 为 my_data
的 script 标签中。这样,我们就可以在前端 JavaScript 中使用 my_data
变量来引用转换后的数组。
最后,在前端 JavaScript 中,我们可以通过获取 script 标签的 innerHTML 属性来获取 JSON 格式的数据,并将其转换为 JavaScript 中的数组。在本例中,我们可以使用以下代码获取 my_data
数组:
var my_data_json = document.getElementById('my_data').innerHTML;
var my_data = JSON.parse(my_data_json);
在这个示例中,我们通过获取 id 为 my_data
的 script 标签的 innerHTML 属性来获取 JSON 数据,并将其使用 JSON.parse
转换为 JavaScript 数组。
在 Django 中将列表数据传递给 JavaScript 的过程包括以下步骤:
json_script
标签将数据转换为 JSON 并嵌入到 HTML 文档中通过这些步骤,我们可以轻松地将 Django 中的数据传递到前端 JavaScript 中进行操作和渲染。