Django 自定義404 500等錯(cuò)誤頁面的實(shí)現(xiàn)
在開發(fā)網(wǎng)站的過程中,404,500錯(cuò)誤,是不可避免產(chǎn)生的。
一旦產(chǎn)生了這種錯(cuò)誤,很多可以通過web server 來處理。比如使用 apache 的定義
或者nginx 的定義。都可以定向處理。如果單純在django里面可以處理嗎?肯定是可以的,django提供了相應(yīng)的處理方式,只要在django里
起步
面定義了,無論你今后部署在apache下或者是nginx下,都是生效的。
要想自定義錯(cuò)誤頁面,需要關(guān)閉調(diào)試模式 DEBUG = False ,因?yàn)檎{(diào)試模式的錯(cuò)誤頁面是開發(fā)下會顯示錯(cuò)誤信息的。
有兩種方法可以實(shí)現(xiàn)自定義的錯(cuò)誤頁面。
方法一:創(chuàng)建特定命名的模板文件
這是一種非常簡單的方式。在項(xiàng)目模板文件夾 templates 中創(chuàng)建命名為 404.html 的模板文件即可。
這個(gè)方式是其實(shí)是借用了 Django 的模板查找規(guī)則進(jìn)行的。源碼在 django.views.defaults.py 中:
ERROR_404_TEMPLATE_NAME = '404.html' def page_not_found(request, exception, template_name=ERROR_404_TEMPLATE_NAME): ...
總的來說,方法一不需要設(shè)路由,只要新建規(guī)定名稱的模板就能生效了。
方法二:設(shè)置句柄
如果需要更個(gè)性化的錯(cuò)誤頁面,不需要拘泥于特定的模板文件名,可以重新設(shè)置句柄,具體是在 urls.py 中設(shè)置:
# urls.py def page_not_found(request, exception): return render(request, 'your_404_filename.html') handler404 = page_not_found urlpatterns = [ ... ]
除了能捕獲不存在路由地址,還能捕獲視圖中 raise Http404('message') 拋出的異常。
哪些錯(cuò)誤頁面可以配置
具體能自定義錯(cuò)誤頁面的有 4 中狀態(tài)碼:
# 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
到此這篇關(guān)于Django 自定義404 500等錯(cuò)誤頁面的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Django自定義404 500錯(cuò)誤頁面內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
對python 矩陣轉(zhuǎn)置transpose的實(shí)例講解
下面小編就為大家分享一篇對python 矩陣轉(zhuǎn)置transpose的實(shí)例講解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04人工智能學(xué)習(xí)PyTorch實(shí)現(xiàn)CNN卷積層及nn.Module類示例分析
這篇文章主要為大家介紹了人工智能學(xué)習(xí)PyTorch實(shí)現(xiàn)CNN卷積層及nn.Module類示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-11-11Python基于datetime或time模塊分別獲取當(dāng)前時(shí)間戳的方法實(shí)例
今天小編就為大家分享一篇關(guān)于Python基于datetime或time模塊分別獲取當(dāng)前時(shí)間戳的方法實(shí)例,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-02-0240行Python代碼實(shí)現(xiàn)天氣預(yù)報(bào)和每日雞湯推送功能
這篇文章主要介紹了通過40行Python代碼實(shí)現(xiàn)天氣預(yù)報(bào)和每日雞湯推送功能,代碼簡單易懂,非常不錯(cuò)具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2020-02-02python利用joblib進(jìn)行并行數(shù)據(jù)處理的代碼示例
在數(shù)據(jù)量比較大的情況下,數(shù)據(jù)預(yù)處理有時(shí)候會非常耗費(fèi)時(shí)間,可以利用 joblib 中的 Parallel 和 delayed 進(jìn)行多CPU并行處理,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下2023-10-10使用Django框架中ORM系統(tǒng)實(shí)現(xiàn)對數(shù)據(jù)庫數(shù)據(jù)增刪改查
這篇文章主要介紹了使用Django的ORM實(shí)現(xiàn)對數(shù)據(jù)庫數(shù)據(jù)增刪改查方法,文中附含詳細(xì)示例代碼以及過程詳解,有需要的朋友可以借鑒參考下2021-09-09Python中的logging模塊實(shí)現(xiàn)日志打印
這篇文章主要介紹了Python中的logging模塊實(shí)現(xiàn)日志打印,其實(shí)不止print打印日志方便排查問題,Python自帶的logging模塊,也可以很簡單就能實(shí)現(xiàn)日志的配置和打印,下面來看看具體的實(shí)現(xiàn)過程吧,需要的朋友可以參考一下2022-03-03