Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
从 Django 视图传递变量到模板中的 JavaScript 脚本_创想鸟

从 Django 视图传递变量到模板中的 JavaScript 脚本

从 django 视图传递变量到模板中的 javascript 脚本

在 Django Web 开发中,经常需要在前端 JavaScript 代码中使用后端 Python 代码中的数据。例如,你可能需要根据数据库中的数据动态生成图表,或者根据用户的角色显示不同的界面元素。直接在 JavaScript 中使用 Django 模板变量可能会导致安全问题,并且不够优雅。Django 提供了 json_script 模板标签,可以安全地将 Python 对象序列化为 JSON 格式,并在 JavaScript 中使用。

使用 json_script 传递变量

json_script 模板标签位于 django.utils.html 模块中,它接受一个 Python 对象作为参数,并将其序列化为 JSON 字符串,然后将其嵌入到 HTML 页面中,并使用指定的 ID 封装在 标签中。

1. 在 Django 视图中准备数据:

首先,在你的 Django 视图函数中,准备好要传递给 JavaScript 的数据。这可以是任何 Python 对象,例如字典、列表、字符串或数字。

立即学习“Java免费学习笔记(深入)”;

from django.shortcuts import renderdef my_view(request):    data = {        'wlws': 10,        'upperbin': 20,        'solenoid': 15,        'brakesw': 25,    }    return render(request, 'my_template.html', {'data': data})

2. 在 HTML 模板中使用 json_script:

在你的 HTML 模板中,使用 json_script 标签将数据嵌入到页面中。你需要指定一个唯一的 ID,以便在 JavaScript 中找到数据。

{% load static %}{% load django_bootstrap5 %}{% load humanize %}        My Chart                google.charts.load('current', {'packages':['corechart']});        google.charts.setOnLoadCallback(drawChart);        function drawChart() {            // 从 JSON 获取数据            const dataFromDjango = JSON.parse(document.getElementById('data-from-django').textContent);            var data = google.visualization.arrayToDataTable([                ["Element", "Density", { role: "style" }],                ["WLWS", dataFromDjango.wlws, "#696969"],                ["Upperbin", dataFromDjango.upperbin, "#696969"],                ["Solenoid", dataFromDjango.solenoid, "#696969"],                ["BrakeSW", dataFromDjango.brakesw, "color: #696969"]            ]);            var options = {                title: 'Element Densities',                legend: { position: 'none' },            };            var chart = new google.visualization.ColumnChart(document.getElementById('columnchart_material'));            chart.draw(data, options);        }        
// 确保 data 变量已定义 var data = {{ data|json_script:"data-from-django" }};

3. 在 JavaScript 中访问数据:

在 JavaScript 代码中,使用 document.getElementById() 方法获取包含 JSON 数据的 标签,然后使用 JSON.parse() 方法将 JSON 字符串解析为 JavaScript 对象。

const dataFromDjango = JSON.parse(document.getElementById('data-from-django').textContent);console.log(dataFromDjango.wlws); // 输出: 10console.log(dataFromDjango.upperbin); // 输出: 20

在这个例子中,data-from-django 是我们在 json_script 标签中指定的 ID。textContent 属性包含 JSON 字符串。JSON.parse() 方法将 JSON 字符串转换为 JavaScript 对象,我们可以像访问普通 JavaScript 对象一样访问其中的属性。

注意事项

安全性: json_script 会自动转义 HTML 特殊字符,防止 XSS 攻击。数据类型: json_script 可以处理 Python 的基本数据类型,例如字符串、数字、布尔值、列表和字典。如果你的数据包含自定义对象,你需要先将其转换为可以序列化为 JSON 的格式。ID 的唯一性: 确保在同一个 HTML 页面中,每个 json_script 标签都使用不同的 ID,以避免冲突。错误处理: 在 JavaScript 中解析 JSON 数据时,应该使用 try…catch 块来处理可能发生的错误。

总结

使用 Django 的 json_script 模板标签,可以安全方便地将 Python 变量传递到 HTML 模板中的 JavaScript 脚本。这种方法避免了直接在 JavaScript 中使用 Django 模板变量可能导致的安全问题,并且使代码更加清晰易懂。通过本文的介绍,你应该能够掌握如何使用 json_script 来传递数据,并在 JavaScript 中使用这些数据来构建动态 Web 应用程序。

以上就是从 Django 视图传递变量到模板中的 JavaScript 脚本的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1581096.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
HTML文本怎么设置字体颜色_HTML文本字体颜色的CSS设置方法
上一篇 2025年12月22日 22:02:19
使用 Django 将变量从视图传递到模板中的 JavaScript 脚本
下一篇 2025年12月22日 22:02:32

相关推荐

发表回复

登录后才能评论
关注微信