我想在我的模板中的JavaScript块中使用Flask视图中的一些数据.我尝试使用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)
TypeError:is not JSON serializable
mehdy.. 10
jsonify
返回Response
从Flask视图返回的对象作为对客户端的JSON响应,因此在这种情况下stocks
不是JSON对象而是Response
对象.
如果要使用JSON但不通过使用直接将其返回到客户端,则可以使用tojson
过滤器将对象转换为模板中的JSON.
当您需要在模板中使用JSON时,例如在JavaScript变量中使用它,您应该使用tojson
.当您需要将JSON响应返回给客户端时,您应该使用它jsonify
.
jsonify
返回Response
从Flask视图返回的对象作为对客户端的JSON响应,因此在这种情况下stocks
不是JSON对象而是Response
对象.
如果要使用JSON但不通过使用直接将其返回到客户端,则可以使用tojson
过滤器将对象转换为模板中的JSON.
当您需要在模板中使用JSON时,例如在JavaScript变量中使用它,您应该使用tojson
.当您需要将JSON响应返回给客户端时,您应该使用它jsonify
.