如何设置javascript值到jinja变量

问题描述:

我知道我们可以将Jinja变量设置为js变量。如何设置javascript值到jinja变量

var x = {{ 'value' }} 

但我试图做相反的事情。即我试图将javascript值设置为jinja变量。我尝试了以下,但没有任何工作。

{{value}} = x 
{% set value = x %} 
{% set value %} x {% endset %} 

x是javascript变量。

有没有什么办法可以做到这一点。

这是不可能的,并且反映了您对Web应用程序体系结构的深入理解。 jinja2是Python的模板引擎,运行在您的服务器上。你正在谈论的JavaScript正在浏览器中运行。

当服务器接收到一个请求时,它会处理一个jinja2模板以获取它将发送给客户端的响应。您不能“将Jinja变量设置为js变量”,您可以以最终为JavaScript变量分配Jinja2变量中的值的方式呈现页面。即您在jinja2模板中以var x = {{ value }}开头; jinja2在渲染过程中将其转换为var x = 42;然后渲染的结果被发送到客户端,客户端将其作为JavaScript执行,并将值42分配给x。这里有一个时间序列(Python - > jinja2 - >呈现页面源代码 - > JavaScript)这一事实意味着你不能做你想做的事情:jinja2变量和JavaScript变量不能同时存在,也不在同一个地方,并且将一个JavaScript值赋给jinja2变量是不可能的。

为了将值42发送给Python(以及稍后可能会发送给jinja2),您需要发送一个请求,将该值从客户端发送到服务器:表单提交或AJAX请求。

如果你想描述你想要做什么,你认为需要你“设置javascript值给jinja变量”,你可能会得到更好的回应。