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

Yuq*_*Wei 7 html javascript python django html5

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

例如,这是我的template.html:

<html>
<head>
<script src="/static/youtube.js"></script>
...
Run Code Online (Sandbox Code Playgroud)

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

非常感谢!

cor*_*cor 12

您需要在脚本标记之前打印它

<html>
<head>
<script>
    var username = {{user.get_username}};
</script>
<script src="/static/youtube.js"></script>
...
Run Code Online (Sandbox Code Playgroud)

然后你可以使用你username内部的变量,youtube.js因为它被声明为javascript全局变量.

  • 我按照你的建议在模板中定义了一个变量全局用户名,我的标签有一个属性所有者名称......看来我应该使用 var username = "{{user.get_username}}" 因为所有者名称是字符串,非常感谢我的问题解决了很多:) (2认同)

Spa*_*guy 9

在较新版本的 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' }}
Run Code Online (Sandbox Code Playgroud)

这将创建一个 HTML<script>标签id=cart_total

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

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