日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

3.3、自定义错误页面

發(fā)布時(shí)間:2023/12/10 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 3.3、自定义错误页面 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

如果你在瀏覽器的地址欄中輸入了不可用的路由,那么會(huì)顯示一個(gè)狀態(tài)碼為 404 的錯(cuò)誤頁面。現(xiàn)在這個(gè)錯(cuò)誤頁面太簡陋、平庸,而且樣式和使用了 Bootstrap 的頁面不一致。

像常規(guī)路由一樣,Flask 允許程序使用基于模板的自定義錯(cuò)誤頁面。最常見的錯(cuò)誤代碼有兩個(gè):404,客戶端請求未知頁面或路由時(shí)顯示;500,有未處理的異常時(shí)顯示。為這兩個(gè)錯(cuò)誤代碼指定自定義處理程序的方式如示例 3-6 所示。

示例 3-6 hello.py:自定義錯(cuò)誤頁面

@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

和視圖函數(shù)一樣,錯(cuò)誤處理程序也會(huì)返回響應(yīng)。它們還返回與該錯(cuò)誤對應(yīng)的數(shù)字狀態(tài)碼。錯(cuò)誤處理程序中引用的模板也需要編寫。這些模板應(yīng)該和常規(guī)頁面使用相同的布局,因此要有一個(gè)導(dǎo)航條和顯示錯(cuò)誤消息的頁面頭部。

編寫這些模板最直觀的方法是復(fù)制 templates/user.html,分別創(chuàng)建 templates/404.html 和templates/500.html,然后把這兩個(gè)文件中的頁面頭部元素改為相應(yīng)的錯(cuò)誤消息。但這種方法會(huì)帶來很多重復(fù)勞動(dòng)。

Jinja2 的模板繼承機(jī)制可以幫助我們解決這一問題。Flask-Bootstrap 提供了一個(gè)具有頁面基本布局的基模板,同樣,程序可以定義一個(gè)具有更完整頁面布局的基模板,其中包含導(dǎo)航條,而頁面內(nèi)容則可留到衍生模板中定義。示例 3-7 展示了 templates/base.html 的內(nèi)容,這是一個(gè)繼承自 bootstrap/base.html 的新模板,其中定義了導(dǎo)航條。這個(gè)模板本身也可作為其他模板的基模板,例如 templates/user.html、templates/404.html 和 templates/500.html。

示例 3-7 templates/base.html:包含導(dǎo)航條的程序基模板

{% 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 class="navbar-brand" href="/">Flasky</a>

??????? </div>

??????? <div class="navbar-collapse collapse">

??????????? <ul class="nav navbar-nav">

??????????????? <li><a href="/">Home</a></li>

??????????? </ul>

??????? </div>

??? </div>

</div>

{% endblock %}

?

{% block content %}

<div class="container">

??? {% block page_content %}{% endblock %}

</div>

{% endblock %}

這個(gè)模板的 content 塊中只有一個(gè) <div> 容器,其中包含了一個(gè)名為 page_content 的新的空塊,塊中的內(nèi)容由衍生模板定義。

現(xiàn)在,程序使用的模板繼承自這個(gè)模板,而不直接繼承自 Flask-Bootstrap 的基模板。通過繼承 templates/base.html 模板編寫自定義的 404 錯(cuò)誤頁面很簡單,如示例 3-8 所示。 。

示例 3-8 templates/404.html:使用模板繼承機(jī)制自定義 404 錯(cuò)誤頁面

錯(cuò)誤頁面在瀏覽器中的顯示效果如下圖所示。

?

{% extends "base.html" %}

?

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

?

{% block page_content %}

<div class="page_header">

<h1>Not Found</h1>

</div>

{% endblock %}

?

?

?

templates/user.html 現(xiàn)在可以通過繼承這個(gè)基模板來簡化內(nèi)容,如示例 3-9 所示。

示例 3-9 templates/user.html:使用模板繼承機(jī)制簡化頁面模板

{% extends "base.html" %}

?

{% block title %}User{% endblock %}

?

{% block content%}

<div class="container">

<div class="page-header">

<h1>Hello,{{ name }}</h1>

</div>

</div>

{% endblock %}

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/sanduzxcvbnm/p/6649508.html

總結(jié)

以上是生活随笔為你收集整理的3.3、自定义错误页面的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。