3

我创建了简单的多应用 Flask 站点。我将所有错误视图(404、501 等)移至 application 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.pymain.py预期开始工作并向我显示我的错误页面。

4

1 回答 1

4

将所有错误模板(如 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    
于 2013-04-05T19:16:27.023 回答