【问题标题】:can't make if condition with django variable and javascript variable无法使用 django 变量和 javascript 变量创建 if 条件
【发布时间】:2017-11-22 00:04:13
【问题描述】:

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

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

【问题讨论】:

  • 好吧,不,你不能那样做。你为什么认为这会起作用?
  • 因为我用一个值做了一个测试,所以我可以在变量中设置这个值然后用这个变量做一个测试
  • 是的,但是 JS 不可能将值传递给 Django 模板变量。
  • 那我该怎么办?
  • 我不知道 if 语句部分,但我们可以通过 '{{your_django_variable|escapejs }}' 在 javascript 中渲染 django 模板标签

标签: javascript python django django-templates


【解决方案1】:

模板的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 = [
        ]

如您所见(您可以在浏览器的开发工具中查看)您的服务器没有为 javascript 生成任何文本,因此locations 数组为空。

如果您只是想测试v.date 是否等于某个字符串,则可以在 view 中创建与该模板对应的变量 test_date 并将其添加到上下文中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-02
    • 1970-01-01
    • 1970-01-01
    • 2020-07-14
    • 1970-01-01
    • 1970-01-01
    • 2013-08-13
    • 2020-01-08
    相关资源
    最近更新 更多