flask模板應用-自定義錯誤頁面 --


自定義錯誤頁面


當程序返回錯誤響應時,會渲染一個默認的錯誤頁面,我們可以注冊錯誤處理函數來處理錯誤頁面

錯誤處理函數和視圖函數很相似,返回值將作為響應的主題,因此我們先要創建錯誤頁面的模板文件。為了和普通模板區分開,我們在模板文件夾templates里建一個errors子文件夾,在其中為最常見的404和500錯誤創建模板文件

 

404頁面模板404.html
1 {% extends 'base.html' %}
2 {% block title %}404 -Page Not Found{% endblock %}
3 {% block content %}
4 <h1>Page Not Found</h1>
5 <p>You are lost...</p>
6 {% endblock %}

錯誤處理函數需要附加app.errorhandler()裝飾器,並傳入錯誤狀態碼作為參數。錯誤處理函數,並在返回值中注明對應的HTTP狀態碼。當發生錯誤時,對應的錯誤處理函數會被調用,它的返回值會作為錯誤響應的主體。

下面例子是用來捕捉404錯誤的錯誤處理器:

1 #encoding=utf-8
2 from flask import Flask,render_template
3 
4 app=Flask(__name__)
5 
6 @app.errorhandler(404)
7 def page_not_found(e):
8     return render_remplate('error/404.html'),404

錯誤處理函數接收異常對象作為參數,內置的異常對象提供了下列常用屬性,如:

Werkzeug內置的HTTP異常類的常用屬性:

如果不想手動編寫錯誤頁面的內容,可以將這些信息傳入錯誤頁面模板,在模板中用它們來構建錯誤頁面。不過需要注意的是,傳入500錯誤處理器的真正的異常對象,通常不會提供這幾個屬性,你需要手動編寫這些值。

Flask通過拋出Werkzeug中定義的HTTP異常類來標識HTTP錯誤,錯誤處理函數接收的參數就是對應的異常類。基於這個原理,你可以使用app.errorhandler()裝飾器為其他異常注冊處理函數,並返回自定義響應,只需要在app.errorhandler()裝飾器中傳入對應的異常類即可。比如使用app.errorhandler(NameError)可以注冊處理NameError異常的函數。

這時如果訪問一個錯誤的URL(127.0.0.1:5000/wwww),就會看到這樣的錯誤頁面

 

對應代碼,app.py

 

 1 #encoding=utf-8
 2 from flask import Flask,render_template
 3 
 4 app=Flask(__name__)
 5 
 6 @app.errorhandler(404)
 7 def page_not_found(e):
 8     return render_template('errors/404.html'),404
 9 
10 @app.route('/')
11 def index():
12     return render_template('index.html')
13 
14 if __name__ == '__main__':
15     app.run(debug = True)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM