如何在Flask中为响应设置HTTP状态文本?
我知道我可以返回一个状态码为
的字符串@app.route('/knockknock')
def knockknock():
return "sleeping, try later", 500
但这设置了正文,我想更改来自"内部服务器错误"去睡觉,稍后再尝试"。
看起来这在Flask / Werkzeug中是不可能的。它没有在任何地方提到过。但也许我错过了什么?
答案 0 :(得分:1)
以下内容适用于Flask。 Flask可以在返回响应时使用状态代码或描述。描述显然也可以包含代码(从客户端来看它是相同的)。但请注意,这不会从Flask端生成默认错误描述。
from flask import Flask
app = Flask(__name__)
@app.route('/knockknock')
def knockknock():
return "", "500 sleeping, try later"
这是curl命令的输出,
curl -i http://127.0.0.1:5000/knockknock
HTTP/1.0 500 sleeping, try later
Content-Type: text/html; charset=utf-8
答案 1 :(得分:0)
也许这个文档会有所帮助,您可以自定义自己的错误页面。
http://flask.pocoo.org/docs/0.12/patterns/errorpages/
通过查看源代码,在app.py中可以找到
if status is not None:
if isinstance(status, string_types):
rv.status = status
else:
rv.status_code = status
所以使用
@app.route('/test')
def tt():
return "status error", "500 msg"
的工作原理。
抱歉误会。
答案 2 :(得分:0)
我不是这方面的专家,但我担心这只能通过monkeypatching实现。
Flask返回werkzeug Response
个对象,似乎http.py
中的状态代码原因为hardcoded。
同样,一些monkeypatching可能足以为你的应用程序改变它。