我想在模板的 JavaScript 块中使用 Flask View 中的一些数据。我尝试使用 jsonify
和 tojson
,但这给出了错误。两者有什么区别?如何在模板中将 JSON 传递给 JavaScript?
@app.route('/stocks')
def stocks():
stocks = jsonify({"aapl":{"price":700, "volume":5000000}, "goog":{"price":655, "volume":9750000}})
return render_template("stocks.html", stocks=stocks)
<script>var zipcodes = {{ stocks|tojson }};</script>
TypeError: <Response 21 bytes [200 OK]> is not JSON serializable
最佳答案
jsonify
返回一个 Response
对象,作为对客户端的 JSON 响应从 Flask View 返回,因此在这种情况下 stocks
不是 JSON 对象而是 Response
对象。
如果你想使用JSON但不直接返回给客户端使用,可以使用tojson
过滤器将模板中的对象转换为JSON。
当您需要在模板中包含 JSON 时,例如在 JavaScript 变量中使用它时,您应该使用 tojson
。当您需要向客户端返回 JSON 响应时,您应该使用 jsonify
。
关于python - Flask中的jsonify和tojson有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34077761/