from flask import Flask,Jsonifyfrom werkzeug.exceptions import httpExceptionimport flask,werkzeugprint 'Flask version: %s' % flask.__version__print 'Werkzeug version: %s' % werkzeug.__version__app = Flask(__name__)app.config['PROPAGATE_EXCEPTIONS'] = Trueclass JsONException(httpException): response = None def get_body(self,environ): return Jsonify(a=1) def get_headers(self,environ): return [('Content-Type','application/Json')]@app.route('/x')def x(): return Jsonify(a=1)@app.route('/y')def y(): raise JsONException()c = app.test_clIEnt()r = c.get('x')print r.datar = c.get('y')print r.data
版画
Flask version: 0.10.1Werkzeug version: 0.9.4{ "a": 1}Traceback (most recent call last): file "flask_error.py",line 33,in <module> print r.data file "/home/path/lib/python2.7/site-packages/werkzeug/wrappers.py",line 881,in get_data self._ensure_sequence() file "/home/path/lib/python2.7/site-packages/werkzeug/wrappers.py",line 938,in _ensure_sequence self.make_sequence() file "/home/path/lib/python2.7/site-packages/werkzeug/wrappers.py",line 953,in make_sequence self.response = List(self.iter_encoded()) file "/home/path/lib/python2.7/site-packages/werkzeug/wrappers.py",line 81,in _iter_encoded for item in iterable: file "/home/path/lib/python2.7/site-packages/werkzeug/wsgi.py",line 682,in __next__ return self._next() file "/home/path/lib/python2.7/site-packages/werkzeug/wrappers.py",in _iter_encoded for item in iterable:TypeError: 'Response' object is not iterable
回溯是意外的.
解决方法 Jsonify()生成一个完整的响应对象,而不是一个响应体,所以使用HTTPException.get_response()
,而不是.get_body(): class JsONException(httpException): def get_response(self,environ): return Jsonify(a=1)
另一种方法是只使用Json.dumps()来生成一个体:
class JsONException(httpException): def get_body(self,environ): return Json.dumps({a: 1}) def get_headers(self,'application/Json')]总结
以上是内存溢出为你收集整理的python – Flask:’Response’对象不能与响应生成异常一起迭代全部内容,希望文章能够帮你解决python – Flask:’Response’对象不能与响应生成异常一起迭代所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)