- Django 基本概念
- Django - 首頁
- Django - 基礎知識
- Django - 概覽
- Django - 環境配置
- Django - 建立專案
- Django - 應用生命週期
- Django - 建立檢視
- Django - URL 對映
- Django - 首頁
- Django - 模板系統
- Django - MVT
- Django - 新增主模板
- Django 管理後臺
- Django 管理後臺 - 介面
- Django 管理後臺 - 建立使用者
- Django 管理後臺 - 包含模型
- Django 管理後臺 - 設定顯示欄位
- Django 管理後臺 - 更新物件
- Django 模型
- Django - 模型
- Django - 插入資料
- Django - 更新資料
- Django - 刪除資料
- Django - 更新模型
- Django 靜態檔案
- Django - 新增靜態檔案
- Django - 新增 CSS 檔案
- Django 高階
- Django - 頁面未找到 (404)
- Django - 頁面重定向
- Django - 傳送郵件
- Django - 通用檢視
- Django - 表單處理
- Django - 檔案上傳
- Django - Apache 配置
- Django - Cookie 處理
- Django - 會話
- Django - 快取
- Django - 評論
- Django - RSS
- Django - AJAX
- Django 有用資源
- Django - 快速指南
- Django - 有用資源
- Django - 討論
Django - 頁面未找到 (404)
什麼是 404 頁面未找到錯誤?
HTTP 協議定義了各種狀態碼來指示不同型別的 HTTP 響應。“404”是 HTTP 狀態碼,表示伺服器無法找到請求的網頁。它被稱為“404 錯誤”,也稱為“404 未找到錯誤”或“HTTP 404 未找到”。
Django 的 404 錯誤預設模板
在 Django 中,給定的 URL 路由對映到某個檢視。當 URL 沒有對應的檢視時,可能會出現 404 錯誤。
讓我們輸入一個在 Django 專案的 URLCONF 中未定義的 URL 路由 -
使用 **startproject** 模板建立的 Django 專案將 DEBUG 引數設定為 TRUE。當找不到檢視且 DEBUG 設定為 TRUE 時,會出現上述頁面。這是 Django 的 404 錯誤程式碼的預設模板。
渲染自定義錯誤頁面
要渲染自定義錯誤頁面,請在 "settings.py" 模組中將 DEBUG 引數設定為 FALSE。此外,您需要指定 ALLOWED_HOSTS 列表,例如 localhost 或某個域名,例如 **https://example.com**。對於任何主機名,將此引數設定為 "*"。
DEBUG = False ALLOWED_HOSTS = ["*"]
進行這些更改後,與之前圖中相同的 URL 不會顯示任何 DEBUG 訊息。
您可以進一步設計一個自定義模板,將其命名為 "404.html",並將其放置在 "BASE_DIR/template" 資料夾中。
404.html
<html>
<body>
<h2 style="text-align: center; color: blue;
font-weight:900;">The Page is Not found</h2>
</body>
</html>
現在,每當找不到檢視時,都會顯示此頁面。
自定義 404 錯誤響應的另一種方法是在專案資料夾下的 "views.py" 檔案中定義一個 **handler404() 檢視**。
**注意** - views.py 模組預設位於應用資料夾中。您需要在專案資料夾中顯式建立它。
views.py
from django.shortcuts import render def handler404(request, exception): return render(request, '404handler.html')
然後,透過在專案的 URLCONF 中使用 **handler404** 變數將 **handler404() 函式**分配給它,指示 Django 在找不到檢視時渲染此模板。
urls.py
from django.contrib import admin
from django.urls import path
from . import views
handler404 = views.handler404
urlpatterns = [
path('admin/', admin.site.urls),
]
404handler.html
將以下 HTML 指令碼另存為 **404handler.html**,放在 **templates** 資料夾中 -
<html>
<body>
<h2 style="text-align: center; color: blue;
font-weight:900;">The Page is Not found</h2>
<br>
<br>
<a href="../home"><b>Back to Home</b></a>
</body>
</html>
訪問任何未定義的 URL 路由以渲染此自定義的 404 錯誤頁面。