中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • python為Django項目上的每個應用程序創建不同的自定義404頁面(最佳答案)

python為Django項目上的每個應用程序創建不同的自定義404頁面(最佳答案)

發布時間:2020-08-19 20:31:02 來源:腳本之家 閱讀:131 作者:像風一樣愛自由 欄目:開發技術

有沒有一種方法可以為Django項目中的每個應用程序創建多個自定義錯誤模板,我的意思是,在我的項目中,我有3個應用程序,每個應用程序將顯示3種不同的custom 404錯誤.

現在,我在后臺應用程序和前臺顯示相同的404錯誤頁面.

最佳答案

創建一個自定義error view并將其分配給根urls.py中的handler404變量:

from django.views.defaults import page_not_found
 
def my_error_404(request, exception):
 template_name = '404.html'
 if request.path.startswith('/backoffice/'):
  template_name='backoffice/404.html'
 elif request.path.startswith('/frontoffice/'):
  template_name='frontoffice/404.html'
 return page_not_found(request, exception, template_name=template_name)

此代碼適用于Django 1.9.如果使用django< = 1.9,則從視圖中刪除exception參數.

知識點補充:

Django 自定義 404 500 等錯誤頁面

起步
要想自定義錯誤頁面,需要關閉調試模式 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

總結

到此這篇關于python為Django項目上的每個應用程序創建不同的自定義404頁面(最佳答案)的文章就介紹到這了,更多相關python django自定義404頁面內容請搜索億速云以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持億速云!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南涧| 长丰县| 肃北| 浏阳市| 海原县| 霍州市| 武安市| 蒙山县| 衢州市| 合水县| 渑池县| 稷山县| 冕宁县| 桦川县| 潞西市| 海林市| 思南县| SHOW| 霍邱县| 轮台县| 睢宁县| 宾川县| 秀山| 利辛县| 响水县| 信宜市| 遵义县| 临泽县| 墨竹工卡县| 安国市| 辽阳县| 永嘉县| 牙克石市| 扶余县| 永安市| 什邡市| 昭觉县| 信阳市| 盖州市| 盐池县| 田阳县|