Flask错误处理程序

时间:2013-04-05 10:17:08

标签: python web flask

我创建了简单的多应用程序Flask网站。我将所有错误视图(404,501等)移动到应用程序errors。但是当发生错误时,我只看到Flask的默认错误页面,而不是我自己的错误页面。 项目结构如下:

/site
|-> main.py
     from flask import Flask

     app = Flask(__name__)
     app.config.from_pyfile('config.py')

     import errors, account, mysite, blog
     from errors.views import not_found

     @app.route("/")
     def index_view():
         return "Welcome!"

     @app.route("/about")
     def about_view():
         return "About"

     if __name__ == "__main__":
         app.run(debug=True)
|-> templates
  |-> errors
    |-> 404.html

|->errors
  |-> __init__.py
     from main import app
     import errors.views
  |-> views
     from errors import app
     from flask import render_template

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

如果我将errors/views.py的内容返回到main.py,它会按预期开始工作,并显示我的错误页面。

1 个答案:

答案 0 :(得分:3)

将所有错误模板(如404等)放在项目的主模板文件夹中。因此,如果您的项目名为“myproject”,则可以使用以下内容:

myproject/
    __init__.py
    templates
        404.html
        503.html
        .. and so on

__init__.py文件中将其称为:

app = Flask(__name__)

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