如何将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

如何将javascript变量传递给django模板标签

django:如何将模板变量传递给 javascript onclick 例程?

如何将变量传递给自定义 Django 模板加载器?

Django 如何将自定义变量传递给上下文以在自定义管理模板中使用?

将 django 变量传递给 javascript