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

Rendering to JS with Jinja produces invalid number rather than string

本文关键字:数字 无效 字符串 Jinja JS 使用      更新时间:2023-09-26

我想把一个字符串传递给模板中的一些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

报价不包括在内。JavaScript试图将其解析为数字,但无法。幸运的是,Flask包含了一个Jinja过滤器。

var tmp = {{ value|tojson }};

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