在Flask中jsonify和tojson有什么区别?

时间:2015-12-03 22:51:21

标签: python json flask jinja2

我想在模板中的JavaScript块中使用Flask视图中的一些数据。我尝试使用jsonifytojson,但这给出了错误。两者有什么区别?如何在模板中将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

1 个答案:

答案 0 :(得分:8)

jsonify返回从Flask视图返回的Response对象作为对客户端的JSON响应,因此在这种情况下stocks不是JSON对象而是Response对象。

如果您想使用JSON但不能通过使用直接将其返回给客户端,您可以使用tojson过滤器将对象转换为模板中的JSON。

如果您需要在模板中使用JSON,例如在JavaScript变量中使用JSON,则应使用tojson。当您需要向客户端返回JSON响应时,您应该使用jsonify