如果条件与django变量和javascript变量不能

时间:2017-06-19 17:05:31

标签: javascript python django django-templates

我在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%}
        ]

当我把变量的值放在测试中时它正在工作

1 个答案:

答案 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,并将其添加到上下文中。