91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • 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

疏勒县| 南雄市| 新宾| 富民县| 新巴尔虎右旗| 泾阳县| 绥德县| 翁源县| 诸城市| 宁海县| 云南省| 龙游县| 阿克苏市| 翁源县| 宜兰市| 莱西市| 雷山县| 积石山| 宜都市| 南丹县| 香格里拉县| 丰台区| 泰兴市| 芜湖市| 灌云县| 烟台市| 兴安盟| 亳州市| 南涧| 楚雄市| 连州市| 江永县| 新巴尔虎左旗| 日照市| 阜新市| 丹寨县| 芜湖市| 赤水市| 云梦县| 马公市| 治县。|