我尝试在 Flask 中使用蓝图进行 404 错误处理,但我似乎没有让它工作。这是我的代码:
I tried using Blueprints for 404 error handling in Flask, but I do not seem to get it working. Here is my code:
errors/handlers.py
from flask import render_template
from autoapp import app
from dockblaster.errors import errors_blueprint
@app.errorhandler(404)
@errors_blueprint.app_errorhandler(404)
def not_found_error(error):
return render_template('error_pages/page_not_found.html'), 404
errors/__init__.py:
from flask import Blueprint
errors_blueprint = Blueprint('errors', __name__)
import dockblaster.errors
终于在app.py注册蓝图了:
def create_app(config_object=ProdConfig):
"""An application factory, as explained here: http://flask.pocoo.org/docs/patterns/appfactories/.
:param config_object: The configuration object to use.
"""
app = Flask(__name__.split('.')[0])
app.config.from_object(config_object)
from dockblaster.errors import errors_blueprint
app.register_blueprint(errors_blueprint)
register_extensions(app)
register_blueprints(app)
return app
我似乎无法正常工作,因为我创建的用于重定向 404 错误的页面无法通过错误蓝图访问。
我自己解决了这个问题。
我这样做了:
我删除了 errors/handlers.py 文件,并将代码添加到 errors/int.py 从而避免了另一个文件导入以访问错误的蓝图处理程序。这似乎对我有用。
errors/handlers.py
from flask import render_template
from autoapp import app
from dockblaster.errors import errors_blueprint
@app.errorhandler(404)
@errors_blueprint.app_errorhandler(404)
def not_found_error(error):
return render_template('error_pages/page_not_found.html'), 404
errors/__init__.py:
from flask import Blueprint
errors_blueprint = Blueprint('errors', __name__)
import dockblaster.errors
终于在app.py注册蓝图了:
def create_app(config_object=ProdConfig):
"""An application factory, as explained here: http://flask.pocoo.org/docs/patterns/appfactories/.
:param config_object: The configuration object to use.
"""
app = Flask(__name__.split('.')[0])
app.config.from_object(config_object)
from dockblaster.errors import errors_blueprint
app.register_blueprint(errors_blueprint)
register_extensions(app)
register_blueprints(app)
return app
我似乎无法正常工作,因为我创建的用于重定向 404 错误的页面无法通过错误蓝图访问。
我自己解决了这个问题。
我这样做了:
我删除了 errors/handlers.py 文件,并将代码添加到 errors/int.py 从而避免了另一个文件导入以访问错误的蓝图处理程序。这似乎对我有用。