如何将JavaScript变量传递给Jinja标记中的函数 函数myFunction(){ var name=“一些字符串”; var display=“{{python_函数(名称)}}”; 警报(显示); }

如何将JavaScript变量传递给Jinja标记中的函数 函数myFunction(){ var name=“一些字符串”; var display=“{{python_函数(名称)}}”; 警报(显示); },javascript,python,jinja2,Javascript,Python,Jinja2,上面的Javascript是用jinja2模板编写的。它应该将javascript变量(即var name)值传递给宏中的python函数。我知道上面的代码无法解决我的问题,因为我没有将javascript变量值正确地传递给宏。在jinja2模板中,有人有将javascript变量传递给宏的方法吗 不能以这种方式将值从javascript传递到模板,因为模板将在响应返回浏览器供javascript引擎评估之前呈现。模板呈现程序能够解析javascript代码中指定的name值的唯一方法是解释中嵌

上面的Javascript是用jinja2模板编写的。它应该将javascript变量(即var name)值传递给宏中的python函数。我知道上面的代码无法解决我的问题,因为我没有将javascript变量值正确地传递给宏。在jinja2模板中,有人有将javascript变量传递给宏的方法吗

不能以这种方式将值从javascript传递到模板,因为模板将在响应返回浏览器供javascript引擎评估之前呈现。模板呈现程序能够解析javascript代码中指定的
name
值的唯一方法是解释
中嵌入的字符串

更新。让我们看看你的第二次尝试,你说的成功了。你有:

<script>
       function myFunction() {
                var name = "some_string";
                var display = "{{ python_function(name) }}";
                alert(display);
       }
</script>

此字符串将是请求响应主体的一部分,因此浏览器将转储窗口上的按钮,在脚本块中计算js代码,这将在
窗口上创建一个全局变量
js_fn
,该变量将接收某些内容并向其发出警报。单击按钮时,将始终使用常量
某些字符串调用
js\u fn
。正如您所看到的,没有将值从JS传递到Python/Flask。

您的意思是我可以像
var some\u var=“{{Python\u function(name)}}”那样更改它吗?@Rohanil也不起作用。让我们想想那会怎么样。视图(或类似的视图)获取该字符串,用该特定参数的
python\u函数的返回值替换
python\u函数(名称)
的内容。不用说,
name
在python中不会解析为任何值,因此您会在屏幕上看到某种错误,表示无法识别“name”之类的内容。是的,您是对的。这肯定行不通。所以,似乎不可能通过jinja2宏将js变量传递给python函数。在特定情况下,你有什么解决办法吗?@Rohanil我不知道你想做什么。如果你告诉我你的想法,我可以试试。@Rohanil哦,你可以做的一件事是:(1)在服务器端设置一个ajax端点,(2)在路由器上添加一个特殊的内部url,以便在有消息发布时调用你的神奇函数,(3)对该url进行ajax调用,并像在那里那样提醒ajax调用的响应。
<body>
    <button onclick="js_fn('{{ py_fn('some_string') }}')">Click me</button>
    <script>
        function js_fn(variable) {
            alert(variable);
        }
    </script>
</body>
<body>
    <button onclick="js_fn('some_string')">Click me</button>
    <script>
        function js_fn(variable) {
            alert(variable);
        }
    </script>
</body>