如何在JavaScript文件中使用Django变量?

时间:2016-04-18 08:36:36

标签: javascript python html django html5

我知道我们可以在模板(html文件)中使用带有{{variable}}的Django变量,但是如何在模板中包含的Javascript文件中使用变量Django?

例如,这是我的template.html:

<html>
<head>
<script src="/static/youtube.js"></script>
...

如何在 youtube.js 中使用变量{{user.get_username}}?不是在template.html,因为我没有在这里写我的脚本...当我在Javascript文件youtube.js中使用{{user.get_username}}时,它导致错误“invalid token {”,但在模板中它工作细

非常感谢!

2 个答案:

答案 0 :(得分:9)

您需要在脚本标记

之前打印它
<html>
<head>
<script>
    var username = {{user.get_username}};
</script>
<script src="/static/youtube.js"></script>
...

然后您可以使用username中的youtube.js变量,因为它被声明为javascript全局变量。

答案 1 :(得分:1)

在较新版本的 Django 中,他们实现了一种方法。这样你也可以免受 XSS 的侵害

https://docs.djangoproject.com/en/3.2/ref/templates/builtins/#json-script

向您的 Django 变量添加 |json_script:'id_of_the_script_tag'

{{ cart_total|json_script:'cart_total' }}

这将创建一个带有 <script>

的 HTML id=cart_total 标记

在 javascript 文件中解析 JSON 并将其保存在您的变量中

const cart_total = JSON.parse(document.getElementById('cart_total').textContent);