我正在构建一个 Flask 应用程序,我需要将在 python 后端创建的变量传递给前端的 javascript 以跟踪某些参数。但是,我遇到了一个奇怪的编码问题,下面是一个示例,概述了 python 后端、渲染的 Jinja2 模板前端以及 Chrome 控制台中显示的错误。
应用程序.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 }})
),我会收到以下错误:
Uncaught SyntaxError: Unexpected token &
最奇怪的事情是当我在 <script>
之外的任何地方打印变量时标记它工作正常。
知道问题是什么以及如何解决它吗?
最佳答案
如果您想获取有效的 JSON 对象/列表并在 javascript 中使用它,请使用 jinja 中的 tojson
过滤器,如下所示:
console.log({{ name|tojson }});
tojson
过滤器还将值标记为安全
,因此它会禁用自动转义。
关于javascript - Flask:将变量传递给 JavaScript 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41880725/