flask更改已有的response

今天遇到个问题,需要更改返回的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

来代替。

原文地址:https://www.cnblogs.com/lyg-blog/p/10051030.html