我知道我们可以像这样将 Jinja 变量设置为 js 变量。
var x = {{ 'value' }}
但我试图做相反的事情。即我正在尝试将 javascript 值设置为 jinja 变量。我尝试了以下但没有任何效果。
{{value}} = x
{% set value = x %}
{% set value %} x {% endset %}
x 是 javascript 变量。
有什么办法可以做到这一点。
最佳答案
这是不可能的,并且反射(reflect)了您对 Web 应用程序架构的理解存在深刻问题。 jinja2 是 Python 的模板引擎,在您的服务器上运行。您所说的 JavaScript 正在您的浏览器中运行。
当服务器接收到请求时,它会处理一个 jinja2 模板以获取它将发送给客户端的响应。您不能“将 Jinja 变量设置为 js 变量”,您可以以这样一种方式呈现页面,即最终为 JavaScript 变量分配一个位于 Jinja2 变量中的值。 IE。你从 var x = {{ value }}
开始在jinja2模板中; jinja2 将其转换为 var x = 42
在其渲染期间;然后渲染的结果被发送到客户端,客户端将其作为 JavaScript 执行,将值 42 分配给 x
.这里有一个时间序列(Python -> jinja2 -> 渲染页面源 -> JavaScript)的事实意味着你不能做你想做的事:jinja2 变量和 JavaScript 变量不同时存在, 也不在同一个地方,并且将 JavaScript 值分配给 jinja2 变量是不可能的。
为了发送值 42
对于 Python(可能后来到 jinja2),您需要发出一个请求,将该值从客户端发送到服务器:表单提交或 AJAX 请求。
如果您准确描述您认为需要“将 javascript 值设置为 jinja 变量”的操作,您可能会得到更好的响应。
关于javascript - 如何将javascript值设置为jinja变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43383808/