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

时间:2015-10-26 11:35:33

标签: javascript python flask jinja2

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

答案 0 :(得分:6)

问题在于

{{ '1.1.1.1' }}

呈现为

1.1.1.1

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

var tmp = {{ value|tojson }};

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