我在javascript中的变量类型表,我需要在这个变量和来自django数据库的变量之间进行if
条件的测试,但它“不起作用。”
示例:
var test_date = "2017-06-23";
var locations = [
{% for v in vs %}
{% if v.date == test_date %}
['okok',{{ v.latitude }},{{ v.longitude}}],
{% endif %}
{% endfor%}
]
第一个例子不起作用,我不知道为什么。
其他例子:
var test_date = "2017-06-23";
var locations = [
{% for v in vs %}
{% if v.date == "2017-06-23" %}
['okok',{{ v.latitude }},{{ v.longitude}}],
{% endif %}
{% endfor%}
]
当我把变量的值放在测试中时它正在工作
答案 0 :(得分:2)
模板的Django部分({% %}
)在服务器上执行,当javascript部分在客户端(仅在浏览器中)执行时。模板标签内的所有变量都是django的变量。关键是django看到了文本和模板标签。它不会执行任何一行jacascript。
让我展示一下django以及javascript如何看待你的第一个例子。
django的:
some text
{% for v in vs %}
{% if v.date == test_date %}
another text
{% endif %}
{% endfor%}
more text
现在您看到没有任何test_date
变量。如果没有test_date
变量(它为空),那么它就等于v.date
。
的javascript:
var test_date = "2017-06-23";
var locations = [
]
如您所见(您可以在浏览器的 dev工具中查看),您的服务器没有为javascript生成任何文本,因此locations
数组为空。
如果您只想测试v.date
是否等于某个字符串,则可以在与此模板对应的 view 中创建变量test_date,并将其添加到上下文中。