Flask中如何显示Jinja变量名而非其对应值?
解决方法
直接写入变量名字符串:
不需要使用Jinja的变量渲染语法{{ }},直接把变量名作为普通文本写在onclick事件里。比如:{% set x = 0 %} <button onclick="myFunction(x)">点击按钮</button>这样Flask渲染后,HTML里就会是
myFunction(x),而不是替换成变量的值0。动态传递变量名(适用于变量名不固定的场景):
如果你的变量名是动态生成的(比如从后端传递过来的字符串),可以直接把这个字符串输出到JS代码中。例如:# Flask后端代码 @app.route('/') def index(): var_name = 'x' return render_template('index.html', var_name=var_name)模板中这样写:
<button onclick="myFunction({{ var_name }})">点击按钮</button>渲染后会得到
myFunction(x)。如果需要传递字符串形式的变量名(比如JS中需要接收字符串),可以用tojson过滤器确保格式正确:<button onclick="myFunction({{ var_name|tojson }})">点击按钮</button>渲染后是
myFunction("x")。使用raw标签避免Jinja解析(特殊场景):
如果你需要输出Jinja语法本身(比如要显示{{ x }}这个文本),可以用raw标签包裹:{% set x = 0 %} <button onclick="myFunction({% raw %}{{ x }}{% endraw %})">点击按钮</button>这会渲染成
myFunction({{ x }}),适合展示模板语法的场景,并非当前需求的最优解。
内容的提问来源于stack exchange,提问作者EveningTangerine
相关产品推荐
相关产品推荐

