Roh*_*nil 5 javascript python jinja2
<script>
function myFunction() {
var name = "some_string";
var display = "{{ python_function(name) }}";
alert(display);
}
</script>
Run Code Online (Sandbox Code Playgroud)
上面的Javascript写在jinja2模板中。它应该将javascript变量(即var名称)值传递给宏中的python函数。我知道上面的代码无法解决我的目的,因为我没有正确将javascript变量值传递给宏。是否有人在jinja2模板中将javascript变量传递给宏的方法?
您不能以这种方式将值从 javascript 传递到模板,因为模板将在响应返回到浏览器以供 javascript 引擎评估之前呈现。模板渲染器能够解析namejavascript 代码中指定的值的唯一方法是解释嵌入在<script></script>.
更新。让我们看看你的第二次尝试,你说的那一次成功了。你有:
<body>
<button onclick="js_fn('{{ py_fn('some_string') }}')">Click me</button>
<script>
function js_fn(variable) {
alert(variable);
}
</script>
</body>
Run Code Online (Sandbox Code Playgroud)
大概这是在某些部分(比如_index.html)。具有py_fn作用域的视图加载_index.html,评估字符串“py_fn('some_string')”,并替换{{ py_fn('some_string') }}为该评估的结果。假设py_fn是字符串上的恒等函数:它是一个接受字符串并立即返回它的一元函数。然后,评估 "py_fn('some_string')" 的结果将是 string 'some_string',它将被替换回来,获得最终的,所谓的“渲染”模板:
<body>
<button onclick="js_fn('some_string')">Click me</button>
<script>
function js_fn(variable) {
alert(variable);
}
</script>
</body>
Run Code Online (Sandbox Code Playgroud)
该字符串将成为请求响应正文的一部分,因此浏览器将转储窗口上的按钮,评估脚本块内的 js 代码,这将在 上创建一个全局变量js_fn,该变量window将接收某些内容并提醒它。单击该按钮时,将始终js_fn使用常量调用some_string。如您所见,没有将值从 JS 传递到 Python/Flask。
| 归档时间: |
|
| 查看次数: |
5055 次 |
| 最近记录: |