自定义错误页面

本文介绍如何使用Flask框架自定义404和500错误页面,并通过模板继承简化开发流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Flask允许程序使用基于模板的自定义错误页面。

常见的错误页面有以下两种:

1.404:客户端请求未知页面或者路由时候显示

2.500:有未处理的异常时候显示

在hello.py中自定义错误页面:


from flask import Flask, render_template
from flask_bootstrap import Bootstrap

app = Flask(__name__)
bootstrap = Bootstrap(app)

@app.route('/')
def index():
    return render_template('index.html')

@app.errorhandler(404)
def page_not_found(e):
    return render_template("404.html"),404

@app.errorhandler(500)
def internal_server_error(e):
    return render_template("500.html"),500

错误处理程序返回响应和该错误对应的数字状态码


因为错误界面只是内容不同,其他的都是一样的,所以可以先定义一个基础模板,所有的错误页面都继承此模板,只修改内容即可。

基模板:templates/base.html

{% extends "bootstrap/base.html" %}
{#标题#}
{% block title %}Flasky{% endblock %}
{#导航#}
{% block navbar %}
<div class="navbar navbar-inverse" role="navigation">
    <div class="container">
        <div class="navbar-header">
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <a href="/" class="navbar-brand">Flasky</a>
        </div>
        <div class="navbar-collapse">
            <ul class="nav navbar-nav">
                <li><a href="/">Home</a> </li>
            </ul>
        </div>
    </div>
</div>
{% endblock %}
{#content中内容由衍生模块定义#}
{% block content %}
<div class="container">
    {% block page_content %}{% endblock %}
</div>
{% endblock %}
 
 

定义错误页面:

404错误页面:templates/404.html

{% extends "base.html" %}

{% block title %}Flasky - Page Not Found{% endblock %}

{% block page_content %}
<div class="page-header">
    <h1>Not Found</h1>
</div>
{% endblock %}
 
 

运行结果:







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值