0
我正在构建一个瓶子应用程序,我需要将前端上的python后端创建的变量传递给javascript以跟踪某些参数。但是,我遇到了一个奇怪的编码问题,下面是一个示例,其中概述了python后端,Jinja2模板前端以及Chrome控制台中显示的错误。flask:错误将变量传递给javascript
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字符编码为一个apostrophre。如果我忽略从上面的console.log语句(它看起来像console.log({{ name }})
)撇号(单引号),我收到以下错误:
Uncaught SyntaxError: Unexpected token &
最奇怪的是,当我在任何地方打印变量<script>
标签外面工作正常。
任何想法是什么问题,我该如何解决它?
'name'是一个不是字典的列表。为什么我们允许使用json过滤器?这对我的工作是否我使用'tojson','安全',或两者,谢谢!使用其中一种还是其他或两种都更好?基于jinja2文档它似乎'安全'内置到'tojson' –
是的...我认为这可能是一个新的额外的东西,我知道这个技巧之后;)技术上,一个列表是有效的JSON,虽然通常不是我们如何思考它。很高兴这有帮助。会根据只使用'tojson'来更新答案 – abigperson