python - Flask - 如何创建自定义 abort() 代码?

标签 python flask abort

Flask 通过使用 abort() 或在错误真正发生时具有良好的错误处理程序。

Flask 文档中有一个错误 404 处理程序的示例:

@app.errorhandler(404)
def not_found(error):
    return render_template('404.html'), 404

所以,我尝试创建自定义错误代码,如

if False:
    abort(777)

@app.errorhandler(777)
def something_is_wrong(error):
    return render_template('777.html'), 777

但它不起作用,Werkzeug 调试器说:LookupError: no exception for 777

我找到了 this question它说我应该这样做:

if False:
    return '777 error', 777

不幸的是,上面的代码产生了白屏,甚至 Werkzeug 调试器也没有出来

我知道我可以做到:

if False:
    return render_template('777.html')

但如果我使用 abort(),它会使代码更清晰。有没有办法创建自定义错误代码?

最佳答案

可能的 HTTP 状态代码列表由 Internet 号码分配机构修复,因此您无法添加自定义状态代码。 Werkzeug 认识到这一点并试图阻止您向浏览器发送无意义的代码。浏览list of status codes找到与您的错误匹配的一个并使用那个。

编辑:向 Werkzeug/Flask 添加状态代码

import werkzeug.exceptions as ex
from flask import Flask, abort

class PaymentRequired(ex.HTTPException):
    code = 402
    description = '<p>You will pay for this!</p>'

abort.mappings[402] = PaymentRequired

app = Flask(__name__)

@app.route('/')
def mainpage():
    abort(402)

@app.errorhandler(402)
def payme(e):
    return 'Pay me!'

app.run()

关于python - Flask - 如何创建自定义 abort() 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12285903/

相关文章:

c# - 终止 .NET 线程

Python每n个字符拆分字符串

python - Django 1.7 没有找到带有 makemigrations 的新模型

python - 我如何测试这个功能?

python - Flask框架可以将实时数据从服务器发送到客户端浏览器吗?

python - 如何在index django中显示答案?

python - 如何将 csv 中的行插入到 postgres+python 中现有表中的特定列?

javascript - Reactjs create-react-app my-app 后端集成

java - 使用复杂的子例程杀死线程。 java