Flask 中的 jsonify 和 tojson 有什么区别?
What is the difference between jsonify and tojson in Flask?
我想在模板的 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
jsonify
returns 一个 Response
对象从 Flask 视图 returned 作为对客户端的 JSON 响应,所以在这种情况下 stocks
不是 JSON 对象而是 Response
对象。
如果你想使用JSON而不是直接return它给客户端使用,你可以使用tojson
过滤器将对象转换为JSON在模板中。
当您需要在模板中使用 JSON 时,例如在 JavaScript 变量中使用它,您应该使用 tojson
。当您需要 return 对客户端的 JSON 响应时,您应该使用 jsonify
.
我想在模板的 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
jsonify
returns 一个 Response
对象从 Flask 视图 returned 作为对客户端的 JSON 响应,所以在这种情况下 stocks
不是 JSON 对象而是 Response
对象。
如果你想使用JSON而不是直接return它给客户端使用,你可以使用tojson
过滤器将对象转换为JSON在模板中。
当您需要在模板中使用 JSON 时,例如在 JavaScript 变量中使用它,您应该使用 tojson
。当您需要 return 对客户端的 JSON 响应时,您应该使用 jsonify
.