我试图将我的变量从Django的视图传递给javascript文件。我在这里阅读了堆栈问题(How can I pass my context variables to a javascript file in Django?)以获得一些指导,但我正在尝试一些不同的东西。我想将变量传递给该特定javascript引用脚本标记中的javascript文件或更改变量声明的顺序。通过示例更容易显示:
我的somerandom.js:
<p id="x"></p>
的作用:
console.log(variable);
不起作用:
编辑:它不起作用,因为在开发人员工具中(在Chrome中按F12)我看到此错误:未捕获的ReferenceError:未定义变量
1:
{% extends base.html %}
{% load static %}
{% block body %}
<h1> Hello, World! </h1>
{% endblock body %}
{% block javascript %}
<script>
var variable = {{ my_var }};
</script>
<script src="{% static "app1/bootstrap/js/somerandom.js" %}"></script>
{% endblock javascript %}
2:
{% extends base.html %}
{% load static %}
{% block body %}
<h1> Hello, World! </h1>
{% endblock body %}
{% block javascript %}
<script src="{% static "app1/bootstrap/js/somerandom.js" %}"></script>
<script>
var variable = {{ my_var }};
</script>
{% endblock javascript %}
我希望那些2工作的原因是,一旦我的代码变长,我就可以正确地组织和引用我的变量。在这个链接(http://www.mutaku.com/wp/index.php/2012/03/accessing-django-template-variables-in-javascript/)中,它表明我们可以在引用javascript文件后声明变量。
答案 0 :(得分:1)
当您使用<script>
标记中包含src= ...
和内容时,行为未定义,并且与您正在使用的浏览器密切相关:带有chrome的实例,脚本从src=...
加载,<script>
的内容被忽略
但强烈建议不要使用它
答案 1 :(得分:1)
用双引号引起来的Django变量对我有用。然后,在变量声明之后调用.js文件。
<script>
var variable = "{{ my_var }}";
</script>
<script type="text/javascript" src="{% static ... %}"></script>
这是因为console.log({{ my_var }})
不会将变量打印到控制台,但是console.log("{{ my_var }}")
可以将其打印到控制台。