我创建了简单的多应用程序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
,它会按预期开始工作,并显示我的错误页面。
答案 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