javascript - 如何将javascript值设置为jinja变量

标签 javascript jinja2

我知道我们可以像这样将 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/

相关文章:

Ansible 条件忽略带有循环项的过滤器

python - 在 wtforms.fields.html5.DecimalRangeField 旁边显示 slider 值

jinja2 - 包括来自 SaltStack 柱子的神社

javascript - 使javascript函数形式特定

python - jinja2:将字符串转换为字典对象?

javascript - 使用 jQuery 获取元素属性

Javascript float 加法

python - Jinja 模板将变量解析为文字字符串

javascript - 使用 fabric js 连接两个对象

javaScript - 求给定整数的所有除数之和