使用 Jinja 渲染到 JS 会产生无效数字而不是字符串

IT技术 javascript python flask jinja2
2021-01-18 10:20:10

我想将一个字符串传递给模板中的某个 JavaScript。但是,该字符串在 JavaScript 运行时被解释为(无效)数字。如何将字符串传递给 JavaScript 变量?

@app.route('/loadNext')
def loadNext():
    return render_template('next.html', value='1.1.1.1')
$("#loadtable").ready(
    function(){
     var tmp = {{ value }};
     alert(tmp);       
});
1个回答

问题是

{{ '1.1.1.1' }}

呈现为

1.1.1.1

报价不包括在内。JavaScript 尝试将其解析为数字,但不能。幸运的是,Flask 为此包含了 Jinja 过滤器。

var tmp = {{ value|tojson }};

tojson将在字符串周围包含引号,并在数值中省略它们。过滤后的值在由 Jinja 呈现时是具有正确类型的有效 JavaScript。