python – Flask:’Response’对象不能与响应生成异常一起迭代
发布时间:2020-05-25 06:23:35 所属栏目:Python 来源:互联网
导读:我似乎无法在Flask 0.10.1中产生异常响应(同样的情况发生在0.9).这段代码: from flask import Flask, jsonifyfrom werkzeug.exceptions import HTTPExceptionimport flask, werkzeugprint Flask version: %s % flask.__version__print
|
我似乎无法在Flask 0.10.1中产生异常响应(同样的情况发生在0.9).这段代码: from flask import Flask,jsonify
from werkzeug.exceptions import HTTPException
import flask,werkzeug
print 'Flask version: %s' % flask.__version__
print 'Werkzeug version: %s' % werkzeug.__version__
app = Flask(__name__)
app.config['PROPAGATE_EXCEPTIONS'] = True
class 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.data
r = c.get('y')
print r.data
版画 Flask version: 0.10.1
Werkzeug 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')] (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
