如何将javascript变量传递给django自定义过滤器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将javascript变量传递给django自定义过滤器相关的知识,希望对你有一定的参考价值。

有没有办法在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”。

答案

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

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

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

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

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

以上是关于如何将javascript变量传递给django自定义过滤器的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Django 变量传递给 Javascript

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

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

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

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

将 django 变量传递给 javascript