Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将javascript变量传递给django自定义筛选器_Javascript_Django_Django Templates_Django Template Filters - Fatal编程技术网

如何将javascript变量传递给django自定义筛选器

如何将javascript变量传递给django自定义筛选器,javascript,django,django-templates,django-template-filters,Javascript,Django,Django Templates,Django Template Filters,有没有办法访问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模板

有没有办法访问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运行得更早,并且在另一台计算机上运行。

您说的@J0ANMM是什么意思?这篇文章的每一个方面都是有效的,即使你使用AJAX,我只是想指出,使用AJAX,你可以在客户端之后回到服务器端。无论如何,通常这种方法可能会使事情过于复杂,但我认为最好记住这一点。