首页 > 解决方案 > 为什么 JS 不从 Jinja 读取数据?

问题描述

我是 Flask 的新手,在尝试将数据从 Python Flask 传递到前端的 JS 时遇到了这个问题:

应用程序.py

@app.route("/",methods=['POST', 'GET'])    
def search():
    data = {"username": "test", "site": "stackoverflow.com"}
    return render_template('search.html',data=data)

搜索.html

<html>
    <head>
    <script type="text/javascript" src="{{url_for('static', filename='js/search.js')}}"></script>
    </head>
    <body>
    </body>
</html>

搜索.js

console.log(data) 

我从控制台得到的结果是

ReferenceError: data is not defined

我已经检查了这个问题,在这种情况下仍然无法解决这个问题,我试过了。 这里的主要问题是什么?是语法问题吗?还是数据格式问题?

标签: javascriptpythonhtmlflaskjinja2

解决方案


data正如@PGHE 所解释的,在您的html 中,您应该使用对json 的强制转换。

为了能够在代码中进行最少更改的情况下使用您的数据,您应该将您的 search.html 更改为:

<html>
  <head>
  <script>
    const jsondata = JSON.parse('{{ data | tojson | safe}}');
    console.log(jsondata) //should show your data
  </script>
  </head>
  <body>
  </body>
</html>

这是 html 中的内联 javascript,但您可以在文件中执行此操作


推荐阅读