如何将javascript变量传递给django自定义过滤器
Posted
技术标签:
【中文标题】如何将javascript变量传递给django自定义过滤器【英文标题】:How to pass javascript variable to django custom filter 【发布时间】: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”。
【问题讨论】:
【参考方案1】:在 Django 模板代码和浏览器内 JavaScript 之间有一个重要的区别,您似乎缺少:
Django 模板构建在服务器端,而 JavaScript 在客户端执行。
这意味着模板代码总是在 JavaScript 之前执行(因为它在页面发送到客户端之前由服务器执行)。因此,不可能按照您想要的方式混合 JavaScript 和 Django 代码。
例如,您似乎认为 JavaScript 循环中的 Django 代码会执行多次。当然,这不是真的。 Django 代码在服务器端执行一次,而不考虑稍后在浏览器中执行的 JavaScript(即,在不同的机器上!)。对于 Django,你的 JavaScript 代码只是一个没有意义的文本。
所以,答案是:如果你想拆分一个字符串并对每个项目应用一个 Django 过滤器,你需要在 Django 的服务器端拆分字符串。您不能在 JavaScript 中拆分它,然后在 Django 中操作结果列表,因为 Django 运行得更早,并且在不同的计算机上。
【讨论】:
@J0ANMM 是什么意思?即使您使用 AJAX,这篇文章的每个世界都仍然有效。 我只是想指出,使用 AJAX,您可以在位于客户端后返回服务器端。无论如何,这种方法通常会使事情变得过于复杂,但我认为最好记住这一点。以上是关于如何将javascript变量传递给django自定义过滤器的主要内容,如果未能解决你的问题,请参考以下文章
django:如何将模板变量传递给 javascript onclick 例程?