我知道我们可以在模板(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 {”,但在模板中它工作细
非常感谢!
答案 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>
id=cart_total
标记
在 javascript 文件中解析 JSON 并将其保存在您的变量中
const cart_total = JSON.parse(document.getElementById('cart_total').textContent);