1. 程式人生 > 程式設計 >Django 自定義404 500等錯誤頁面的實現

Django 自定義404 500等錯誤頁面的實現

在開發網站的過程中,404,500錯誤,是不可避免產生的。
一旦產生了這種錯誤,很多可以通過web server 來處理。比如使用 apache 的定義
或者nginx 的定義。都可以定向處理。如果單純在django裡面可以處理嗎?肯定是可以的,django提供了相應的處理方式,只要在django裡

起步

面定義了,無論你今後部署在apache下或者是nginx下,都是生效的。

要想自定義錯誤頁面,需要關閉除錯模式DEBUG = False ,因為除錯模式的錯誤頁面是開發下會顯示錯誤資訊的。

有兩種方法可以實現自定義的錯誤頁面。

方法一:建立特定命名的模板檔案

這是一種非常簡單的方式。在專案模板資料夾templates 中建立命名為404.html 的模板檔案即可。

這個方式是其實是借用了 Django 的模板查詢規則進行的。原始碼在django.views.defaults.py 中:

ERROR_404_TEMPLATE_NAME = '404.html'

def page_not_found(request,exception,template_name=ERROR_404_TEMPLATE_NAME):
 ...

總的來說,方法一不需要設路由,只要新建規定名稱的模板就能生效了。

方法二:設定控制代碼

如果需要更個性化的錯誤頁面,不需要拘泥於特定的模板檔名,可以重新設定控制代碼,具體是在urls.py 中設定:

# urls.py
def page_not_found(request,exception):
 return render(request,'your_404_filename.html')

handler404 = page_not_found

urlpatterns = [
 ...
]

除了能捕獲不存在路由地址,還能捕獲檢視中raise Http404('message') 丟擲的異常。

哪些錯誤頁面可以配置

具體能自定義錯誤頁面的有 4 中狀態碼:

# django.views.defaults.py
ERROR_404_TEMPLATE_NAME = '404.html'
ERROR_403_TEMPLATE_NAME = '403.html'
ERROR_400_TEMPLATE_NAME = '400.html'
ERROR_500_TEMPLATE_NAME = '500.html'

# django.conf.urls.__init__.py
handler400 = defaults.bad_request
handler403 = defaults.permission_denied
handler404 = defaults.page_not_found
handler500 = defaults.server_error

到此這篇關於Django 自定義404 500等錯誤頁面的實現的文章就介紹到這了,更多相關Django自定義404 500錯誤頁面內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!