python – Flask:’Response’对象不能与响应生成异常一起迭代

python – Flask:’Response’对象不能与响应生成异常一起迭代,第1张

概述我似乎无法在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,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’对象不能与响应生成异常一起迭代所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1206637.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存