python - Flask返回404错误的随机模板

标签 python python-3.x flask error-handling

Flask不断返回奇怪的404默认模板,并忽略了我的定制模板。我不知道为什么。
这是我的初始

def create_app(config_class=Config):
    app = Flask(__name__)
    app.config.from_object(config_class)

    db.init_app(app)
    #Fixes flask db upgrade to allow deleting columns
    with app.app_context():
        if db.engine.url.drivername == 'sqlite':
            migrate.init_app(app, db, render_as_batch=True)
        else:
            migrate.init_app(app, db)
    login.init_app(app)
    babel.init_app(app)
    bootstrap.init_app(app)
    moment.init_app(app)

    app.logger.setLevel(logging.INFO)
    app.logger.info('Bob startup')
    app.redis = Redis.from_url(app.config['REDIS_URL'])
    app.task_queue = rq.Queue('offutt-tasks', connection=app.redis)

    from app.errors import bp as errors_bp
    app.register_blueprint(errors_bp)

    from app.main import bp as main_bp
    app.register_blueprint(main_bp)

    return app

from app import models
这是我的错误文件夹中的初始:
from flask import Blueprint

bp = Blueprint('errors', __name__)

from app.errors import handlers
最后,这是我的路线处理程序页面。
from flask import render_template, request
from app import db
from app.errors import bp
#from app.api.errors import error_response as api_error_response

def wants_json_response():
    return request.accept_mimetypes['application/json'] >= \
        request.accept_mimetypes['text/html']

@bp.errorhandler(404)
def not_found_error(error):
    #if wants_json_response():
    #    return api_error_response(404)
    return render_template('errors/404.html'), 404


@bp.errorhandler(500)
def internal_error(error):
    db.session.rollback()
    #if wants_json_response():
    #    return api_error_response(500)
    return render_template('errors/500.html'), 500
当我编写直接转到它的路由时,我的404.html可以很好地显示,但是错误处理程序似乎根本不起作用。它呈现的只是一个页面,上面写着“在服务器上找不到请求的URL。如果您手动输入URL,请检查拼写,然后重试。”
有任何想法吗?

最佳答案

您需要使用app_errorhandler()来将其用于所有请求,即使是在蓝图doc之外。例如。

@bp.app_errorhandler(404)
def not_found_error(error):
    ....

关于python - Flask返回404错误的随机模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63732957/

相关文章:

python - Flask 中的简单例份验证在 Apache 下不起作用

python - Python 字典列表的 C++ 等价物?

xml - 使用Python3和BeautifulSoup解析xml文件

python - Tensorflow 的介绍性 MNIST 示例导致异常

python - 为什么 DSU decorate-sort-undecorate 比提供比较函数更快?

python - 为什么我不能在 Python 上单击并拖动圆圈?

python - 在 python 中滚动前 3 个月的唯一总和

flask - 在Flask WSGI请求/响应包装器中记录响应主体

python - 如何将我的 Flask 应用程序连接到我的 SQLite3 数据库?

javascript - 在 JavaScript 脚本标签中使用 jinja2(带 flask )呈现数据