Flask返回404错误的随机模板

2024-05-29 09:33:12 发布

您现在位置:Python中文网/ 问答频道 /正文

Flask一直返回一个奇怪的404默认模板,并忽略我的自定义模板。我不知道为什么

这是我的init

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

这是我的“错误”文件夹中的我的init

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在我编写一条直接到达它的路由时呈现良好,但errorhandler似乎根本不起作用。它呈现的只是一个页面,上面写着“在服务器上找不到请求的URL。如果手动输入URL,请检查拼写并重试。”

有什么想法吗


Tags: fromimportapiconfigappdbreturninit
1条回答
网友
1楼 · 发布于 2024-05-29 09:33:12

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

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

相关问题 更多 >

    热门问题