今天遇到个问题,需要更改返回的response,但框架已经生成了一个response,所以需要直接更改。
试着找了找解决办法,最终解决方式如下:
1 #下文中payload的类型是
2 # class Response(werkzeug.wrappers.Response, JSONMixin)
3
4 payload.set_data(json.dumps({'status': 'OK'}))
5 payload.status_code = 200
6 payload.content_type = 'application/json'
虽然可以解决问题,但觉得生成response后再改多少有点多此一举,以后还是要尽量避免这样。
那么,redirect(one_url)可以使用:
1 from werkzeug.utils import escape 2 from werkzeug.urls import iri_to_uri 3 4 location = one_url 5 display_location = escape(location) 6 location = iri_to_uri(location, safe_conversion=True) 7 8 payload.set_data('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> ' 9 '<title>Redirecting...</title> ' 10 '<h1>Redirecting...</h1> ' 11 '<p>You should be redirected automatically to target URL: ' 12 '<a href="%s">%s</a>. If not click the link.' % 13 (escape(location), display_location)) 14 payload.mimetype ='text/html' # 查了查,似乎指定mimetype更合适,content_type会根据mimetype自动生成。 15 payload.status_code = 302 16 payload.headers['Location'] = location
来代替。