我想在模板中的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)
<script>var zipcodes = {{ stocks|tojson }};</script>
TypeError: <Response 21 bytes [200 OK]> is not JSON serializable
答案 0 :(得分:8)
jsonify
返回从Flask视图返回的Response
对象作为对客户端的JSON响应,因此在这种情况下stocks
不是JSON对象而是Response
对象。
如果您想使用JSON但不能通过使用直接将其返回给客户端,您可以使用tojson
过滤器将对象转换为模板中的JSON。
如果您需要在模板中使用JSON,例如在JavaScript变量中使用JSON,则应使用tojson
。当您需要向客户端返回JSON响应时,您应该使用jsonify
。