Django - 頁面未找到 (404)



什麼是 404 頁面未找到錯誤?

HTTP 協議定義了各種狀態碼來指示不同型別的 HTTP 響應。“404”是 HTTP 狀態碼,表示伺服器無法找到請求的網頁。它被稱為“404 錯誤”,也稱為“404 未找到錯誤”或“HTTP 404 未找到”。

Django 的 404 錯誤預設模板

在 Django 中,給定的 URL 路由對映到某個檢視。當 URL 沒有對應的檢視時,可能會出現 404 錯誤。

讓我們輸入一個在 Django 專案的 URLCONF 中未定義的 URL 路由 -

Django Page Not Found 1

使用 **startproject** 模板建立的 Django 專案將 DEBUG 引數設定為 TRUE。當找不到檢視且 DEBUG 設定為 TRUE 時,會出現上述頁面。這是 Django 的 404 錯誤程式碼的預設模板。

渲染自定義錯誤頁面

要渲染自定義錯誤頁面,請在 "settings.py" 模組中將 DEBUG 引數設定為 FALSE。此外,您需要指定 ALLOWED_HOSTS 列表,例如 localhost 或某個域名,例如 **https://example.com**。對於任何主機名,將此引數設定為 "*"。

DEBUG = False
ALLOWED_HOSTS = ["*"]

進行這些更改後,與之前圖中相同的 URL 不會顯示任何 DEBUG 訊息。

Django Page Not Found 2

您可以進一步設計一個自定義模板,將其命名為 "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>

現在,每當找不到檢視時,都會顯示此頁面。

Django Page Not Found 3

自定義 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 錯誤頁面。

Django Page Not Found 4
廣告

© . All rights reserved.