var x = {{ 'value' }}
但是我正在尝试相反的操作,即将 JavaScript 值设置为 Jinja 变量。我尝试了以下方法,但没有任何作用。
但我正在尝试相反的操作。即:将 JavaScript 的值设置到 Jinja 的变量中。我尝试了以下操作,但都没有生效。
{{value}} = x
{% set value = x %}
{% set value %} x {% endset %}
x是 JavaScript 变量。
有没有办法实现这个?
var x = {{ 'value' }}
但是我正在尝试相反的操作,即将 JavaScript 值设置为 Jinja 变量。我尝试了以下方法,但没有任何作用。
但我正在尝试相反的操作。即:将 JavaScript 的值设置到 Jinja 的变量中。我尝试了以下操作,但都没有生效。
{{value}} = x
{% set value = x %}
{% set value %} x {% endset %}
x是 JavaScript 变量。
有没有办法实现这个?
这是不可能的,反映了你对Web应用程序架构理解上存在深层次的问题。Jinja2是一个Python模板引擎,运行在你的服务器上。你所说的JavaScript是在你的浏览器中运行。
当服务器接收到请求时,它会处理一个Jinja2模板以获取响应并发送给客户端。你无法“将Jinja变量设置为js变量”,但可以通过渲染页面的方式最终将Jinja2变量赋值给JavaScript变量。例如:你在Jinja2模板中开始使用var x = {{ value }}
;在Jinja2渲染过程中,jinja2将其转换为var x = 42
;然后,渲染结果会发送到客户端,客户端作为JavaScript执行,将值42分配给x
。由于存在时间序列(Python-> jinja2-> 渲染的页面源代码-> JavaScript),这意味着你不能做你想做的事情:Jinja2变量和JavaScript变量不同时存在,也不在同一位置,因此无法将JavaScript值分配给Jinja2变量。
为了将值42
发送给Python(可能还需要发送给jinja2),需要发出请求,将该值从客户端发送到服务器:表单提交或AJAX请求等。
如果你能描述清楚具体想要做的事情,并且认为需要“将JavaScript值设置为Jinja变量”,你可能会得到更好的回答。
render_template()
这样的函数。这将使用Jinja2语法生成HTML,将Jinja2语句替换为服务器已知的值,并在呈现给客户端之前将它们插入到HTML中。可以将Jinja2视为变量插入和简单脚本,用于生成HTML。JavaScript是您的前端脚本语言,在HTML生成并服务于客户端浏览器后运行。www.yourwebsite.com?x=value
,现在后端中的x
将被设置为'value'
。您可以在HTML模板中使用它,包括{{ x }}
,当您调用render_template()
时,它将解析为'value'。好的...你可以从你的javascript向服务器发送一个post请求,然后从你的python后端将信息发送到html前端
javascript前端 > POST > python后端 > 模板 > html前端