### 導航
- [索引](# "總目錄")
- [下一頁](# "延遲加載視圖") |
- [上一頁](# "用 jQuery 實現 Ajax") |
- [Flask 0.10.1 文檔](#) ?
- [Flask 代碼模式](#) ?
# 自定義錯誤頁面
Flask 自帶了很順手的 [abort()](# "flask.abort") 函數用于以一個 HTTP 失敗代碼中斷一個請求,他也會提供一個非常簡單的錯誤頁面,用于提供一些基礎的描述。這個頁面太樸素了以至于缺乏一點靈氣。
依賴于錯誤代碼的不同,用戶看到某個錯誤的可能性大小也不同。
### 通常的錯誤代碼
下面列出了一些用戶經常遇到的錯誤代碼,即使在這個應用準確無誤的情況下也可能發生:
*404 Not Found*經典的“哎呦,您輸入的 URL 當中有錯誤”消息。這個消息太常見了,即使是互聯網的新手也知道 404 代號的意義: 該死,我尋找的東西不在那兒。確保404 頁面上有一些有用的信息是一個好主意,至少應該提供一個返回主頁的鏈接。*403 Forbidden*如果您的網站包含一些類型的訪問控制,您必須向非法的請求返回 403 錯誤代號。所以請確保用戶不會在試圖訪問了一個禁止訪問的資源后不知所措。*410 Gone*您知道 404 Not Found 代號還有一個兄弟名為 410 Gone 么? 很少有人真正實現它,您可以考慮將其返回給對以前曾經存在、但是現在已經刪除的資源的請求,而不是直接返回 404 。 如果您還沒有從數據庫里永久刪除這個文檔,僅僅是將他們標記為刪除。那么可以為用戶展示一個消息,說明他們尋找的東西已經永遠刪除了。*500 Internal Server Error*通常在出現編程錯誤或者服務器過載的時候會返回這個錯誤代號。在這里放一個漂亮的頁面是一個非常好的主意。因為您的應用 *總有一天* 會出現錯誤(請參考[*記錄應用錯誤*](#) )
### 錯誤處理器
一個錯誤處理器是一個類似于視圖函數的函數,但是它在錯誤發生時被執行,并且錯誤被當成一個參數傳遞進來。一般來說錯誤可能是 HTTPException ,但是在有些情況下會是其他錯誤: 內部服務器的錯誤的處理器在被執行時,將會同時得到被捕捉到的實際代碼錯誤作為參數。
錯誤處理器和要捕捉的錯誤代碼使用 [errorhandler()](# "flask.Flask.errorhandler") 裝飾器注冊。請記住 Flask *不會* 替您設置錯誤代碼,所以請確保在返回 response 對象時,提供了對應的 HTTP 狀態代碼。
如下實現了一個 “404 Page Not Found” 錯誤處理的例子:
~~~
from flask import render_template
@app.errorhandler(404)
def page_not_found(e):
return render_template('404.html'), 404
~~~
一個示例模板可能會如下所示:
~~~
{% extends "layout.html" %}
{% block title %}Page Not Found{% endblock %}
{% block body %}
<h1>Page Not Found</h1>
<p>What you were looking for is just not there.
<p><a href="{{ url_for('index') }}">go somewhere nice</a>
{% endblock %}
~~~
? 版權所有 2013, Armin Ronacher.
- 歡迎使用 Flask
- 前言
- 給有經驗程序員的前言
- 安裝
- 快速入門
- 教程
- 介紹 Flaskr
- 步驟 0: 創建文件夾
- 步驟 1: 數據庫模式
- 步驟 2: 應用設置代碼
- 步驟 3: 創建數據庫
- 步驟 4: 請求數據庫連接
- 步驟 5: 視圖函數
- 步驟 6: 模板
- 步驟 7: 添加樣式
- 福利: 應用測試
- 模板
- 測試 Flask 應用
- 記錄應用錯誤
- 配置處理
- 信號
- 即插視圖
- 應用上下文
- 請求上下文
- 用藍圖實現模塊化的應用
- Flask 擴展
- 與 Shell 共舞
- Flask 代碼模式
- 大型應用
- 應用程序的工廠函數
- 應用調度
- 使用 URL 處理器
- 部署和分發
- 使用 Fabric 部署
- 在 Flask 中使用 SQLite 3
- 在 Flask 中使用 SQLAlchemy
- 上傳文件
- 緩存
- 視圖裝飾器
- 使用 WTForms 進行表單驗證
- 模板繼承
- 消息閃現
- 用 jQuery 實現 Ajax
- 自定義錯誤頁面
- 延遲加載視圖
- 在 Flask 中使用 MongoKit
- 添加 Favicon
- 數據流
- 延遲請求回調
- 添加 HTTP Method Overrides
- 請求內容校驗碼
- 基于 Celery 的后臺任務
- 部署選擇
- mod_wsgi (Apache)
- 獨立 WSGI 容器
- uWSGI
- FastCGI
- CGI
- 聚沙成塔
- API
- JSON 支持
- Flask 中的設計決策
- HTML/XHTML 常見問題
- 安全注意事項
- Flask 中的 Unicode
- Flask 擴展開發
- Pocoo 風格指引
- Python 3 支持
- 升級到最新版本
- Flask Changelog
- 許可證
- 術語表