我正在建立一个烧瓶应用程序,我需要将在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>
当我打开控制台时,我看到以下内容:
['Michael']
&#&符号#39是叛逆者的ASCII字符编码。如果我从上面的console.log语句(看起来像console.log({{ name }})
)中省略了撇号(单引号),我会收到以下错误:
未捕获的SyntaxError:意外的令牌&amp;
最奇怪的是,当我在<script>
标签之外的任何地方打印变量时,它可以正常工作。
知道问题是什么以及我该如何解决?
答案 0 :(得分:2)
如果您想获取有效的JSON对象/列表并在javascript中使用它,请使用jinja中的tojson
过滤器,如下所示:
console.log({{ name|tojson }});
tojson
过滤器还会将值标记为safe
,因此会禁用自动转义。