【问题标题】:How to pass javascript variable to django custom filter如何将javascript变量传递给django自定义过滤器
【发布时间】:2014-01-23 23:40:03
【问题描述】:

有没有办法访问django模板代码中的JavaScript变量如下图:

var tags_v1 = '{{ form.tags_1.value }}';
tags_v1 = tags_v1.split('{{ form.value_delim }}');
tags_v1 = tags_v1.map(function (item) { return '{{ $(item)|get_tag }}'; }) ;

我想将“item”的值作为变量传递给自定义过滤器“get_tag”。

【问题讨论】:

    标签: javascript django django-templates django-template-filters


    【解决方案1】:

    在 Django 模板代码和浏览器内 JavaScript 之间有一个重要的区别,您似乎缺少:

    Django 模板构建在服务器端,而 JavaScript 在客户端执行。

    这意味着模板代码总是在 JavaScript 之前执行(因为它在页面发送到客户端之前由服务器执行)。因此,不可能按照您想要的方式混合 JavaScript 和 Django 代码。

    例如,您似乎认为 JavaScript 循环中的 Django 代码会执行多次。当然,这不是真的。 Django 代码在服务器端执行一次,而不考虑稍后在浏览器中执行的 JavaScript(即,在不同的机器上!)。对于 Django,你的 JavaScript 代码只是一个没有意义的文本。

    所以,答案是:如果你想拆分一个字符串并对每个项目应用一个 Django 过滤器,你需要在 Django 的服务器端拆分字符串。您不能在 JavaScript 中拆分它,然后在 Django 中操作结果列表,因为 Django 运行得更早,并且在不同的计算机上。

    【讨论】:

    • @J0ANMM 是什么意思?即使您使用 AJAX,这篇文章的每个世界都仍然有效。
    • 我只是想指出,使用 AJAX,您可以在位于客户端后返回服务器端。无论如何,这种方法通常会使事情变得过于复杂,但我认为最好记住这一点。
    猜你喜欢
    • 1970-01-01
    • 2012-02-26
    • 2019-03-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-24
    • 1970-01-01
    • 2014-01-16
    相关资源
    最近更新 更多