flask:错误将变量传递给javascript

时间:2017-01-26 18:45:53

标签: javascript flask ascii jinja2

我正在建立一个烧瓶应用程序,我需要将在python后端创建的变量传递给前端的javascript以跟踪某些参数。但是,我遇到了一个奇怪的编码问题,下面是一个示例,概述了python后端,渲染的Jinja2模板前端以及Chrome控制台中显示的错误。

app.py:

@app.route('/')
def send_name():
    name = ["Michael"]
    return render_template('index.html', name=name)

的index.html:

<html>
    <script>
        console.log('{{ name }}')
    </script>
</html>

当我打开控制台时,我看到以下内容:

[&#39;Michael&#39;]
&#&符号#39是叛逆者的ASCII字符编码。如果我从上面的console.log语句(看起来像console.log({{ name }}))中省略了撇号(单引号),我会收到以下错误:

  

未捕获的SyntaxError:意外的令牌&amp;

最奇怪的是,当我在<script>标签之外的任何地方打印变量时,它可以正常工作。

知道问题是什么以及我该如何解决?

1 个答案:

答案 0 :(得分:2)

如果您想获取有效的JSON对象/列表并在javascript中使用它,请使用jinja中的tojson过滤器,如下所示:

console.log({{ name|tojson }});

tojson过滤器还会将值标记为safe,因此会禁用自动转义。