javascript - Flask:将变量传递给 JavaScript 时出错

标签 javascript flask ascii jinja2

我正在构建一个 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>

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

[&#39;Michael&#39;]

& 号#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/

相关文章:

javascript - 如何使用 Jest/Enzyme 测试 React 中文件类型输入的更改处理程序?

java - 如何从 label 或 span 获取数据并将其传输到 div、其他 span 或标签

python - 是否有更短/更好的方法来验证请求参数?

c - 仅打印字符串中的字母

C#读取一个字符并将其放置在特定位置

javascript - 检查字符串中字符的 ASCII 码值是否大于或小于前一个字符的 ASCII 码值 - JavaScript

javascript - Fusion Charts 未渲染

javascript - Mongoose 中递归、返回问题中的 Promise

python - 你如何用cython编译一个 flask 应用程序?

python - Flask-SQLAlchemy - Backref 不起作用,值为 None