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

skl*_*ing 4 javascript python jinja2 flask

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

@app.route('/loadNext')
def loadNext():
    return render_template('next.html', value='1.1.1.1')
Run Code Online (Sandbox Code Playgroud)
$("#loadtable").ready(
    function(){
     var tmp = {{ value }};
     alert(tmp);       
});
Run Code Online (Sandbox Code Playgroud)

dir*_*irn 7

问题是

{{ '1.1.1.1' }}
Run Code Online (Sandbox Code Playgroud)

呈现为

1.1.1.1
Run Code Online (Sandbox Code Playgroud)

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

var tmp = {{ value|tojson }};
Run Code Online (Sandbox Code Playgroud)

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