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,请检查拼写并重试。”
有什么想法吗
您需要使用
app_errorhandler()
将其用于所有请求,即使在blueprint doc之外。例如相关问题 更多 >
编程相关推荐