django rest_framework 自定義403 Forbidden錯誤頁面

django本來有是可以很方便自定義HTTP錯誤頁面的,網上資料一大把。核心是在項目的urls代碼中增加handler403的定義,比如:

handler403 = "app.views.your_custom_view"

404,500都是一樣的,重新定義handler404和handler500就行了。

但是我發現加上rest_framework之后,handler404和handler500都沒問題,就是handler403怎么都不行。后來看了rest_framework的文檔,才明白,rest_framework文檔寫的很明白,它會攔截PermissionDenied異常,所以自定義的handler403是不會起作用的。

我后來找到一種方法,自己寫一個middleware,攔截403錯誤。

1. 寫一個自定義的的middlewares.py:

from django.shortcuts import render
from django.utils.deprecation import MiddlewareMixinclass CustomExceptionMiddleware(MiddlewareMixin):def process_response(self, request, response):if response.status_code == 500:error_message = f"error message: 500 server internal error"return render(request, 'error.html', {'error_message': error_message})elif response.status_code == 404:error_message = f"error message: 404 server internal error"return render(request, 'error.html', {'error_message': error_message})elif response.status_code == 403:error_message = f"error message: 403 server internal error"return render(request, 'error.html', {'error_message': error_message})else:return response

這里面對response進行攔截,如果status code是403則返回指定頁面,否則返回原來的response

2. 修改項目的settings,把剛寫的middleware加上去:

MIDDLEWARE = ['bid_request_system_app.commons.middlewares.CustomExceptionMiddleware'
]

就可以了

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/910496.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/910496.shtml
英文地址,請注明出處:http://en.pswp.cn/news/910496.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Kafka Streams架構深度解析:從并行處理到容錯機制的全鏈路實踐

在流處理技術領域,Kafka Streams以其輕量級架構與Kafka生態的深度整合能力脫穎而出。作為構建在Kafka生產者/消費者庫之上的流處理框架,它通過利用Kafka原生的分區、副本與協調機制,實現了數據并行處理、分布式協調與容錯能力的無縫集成。本文…

【嵌入式硬件實例】-555定時器控制舵機/伺服電機

555定時器控制舵機/伺服電機 文章目錄 555定時器控制舵機/伺服電機1、555定時器介紹2、舵機/伺服電機介紹3、硬件準備與接線使用 555 定時器 IC 的伺服電機控制器和測試儀電路是一個簡單的電路,可用于生成操作伺服電機所需的控制信號。該電路允許我們通過按下按鈕手動驅動/控制…

國產麒麟 安裝可視化數據庫軟件DBeaver(圖解)

目錄 ????????編輯DBeaver介紹 官網 通過強制使用 Ubuntu 模板來修復 add-apt-repository 重新添加 PPA 撤銷更改(可選) 官網直接下載 DBeaver CE 下載好后安裝軟件 啟動方式一 啟動方式二 啟動成功 在左側右擊新建連接 安裝驅動 測…

線程池 JMM 內存模型

線程池 & JMM 內存模型 文章目錄 線程池 & JMM 內存模型線程池線程池的創建ThreadPoolExecutor 七大參數飽和策略ExecutorService 提交線程任務對象執行的方法:ExecutorService 關閉線程池的方法:線程池最大線程數如何確定? volatile…

[論文閱讀] 軟件工程 + 教學 | 軟件工程項目管理課程改革:從傳統教學到以學生為中心的混合式學習實踐

軟件工程項目管理課程改革:從傳統教學到以學生為中心的混合式學習實踐 論文信息 arXiv:2506.14369 Agile and Student-Centred Teaching of Agile/Scrum Concepts Maria Spichkova Comments: Preprint. Accepted to the 29th International Conference on Knowledg…

Windows系統提示“mfc140u.dll丟失”?詳細修復指南,一鍵恢復程序運行!

當你興致勃勃地打開某個游戲或專業軟件時,突然彈出一條錯誤提示——“MFC140u.dll丟失”,程序直接閃退,讓人無比沮喪。別擔心!這個問題并不復雜,通常只需重新安裝運行庫或修復系統文件即可解決。本文將為你提供詳細的修…

云XR(AR/VR)算力底座關鍵特征與技術路徑

云XR(AR/VR)算力底座是支撐擴展現實技術規模化落地的核心基礎設施,當前發展呈現以下關鍵特征與技術路徑: 一、算力架構:云邊端協同異構融合 分布式部署模式? 云端?:承擔高復雜度渲染與大數據處理&#x…

Android開發常用adb合集

Android開發常用adb合集 Android開發常用adb合集crash日志導出 Android開發常用adb合集 crash日志導出 bugreport: adb bugreportdropbox: adb shell dumpsys dropbox --print > desktop/full_dropbox_logs.txt

LTspice仿真4——exp指數函數波形

參數設置 Vinitial:初始電壓值 Vpulsed:脈沖達到值 Rise Delay:上升延遲時間 Rise Tau:上升指數系數tau Fall Delay:下降延遲時間 Fall Tau:下降指數系數tau tau決定指數波形下降或者上升快慢&#x…

[Java 基礎]集合框架

在 Java 中,我們經常需要存儲和操作一組數據,而集合框架就是為此而生。它提供了一套統一的接口和類,幫助我們高效地管理各種數據集合。 常用的集合框架中的類只有 ArrayList、LinkedList、HashSet、HashMap 這 4 個,這些類的繼承…

SQL關鍵字三分鐘入門:WITH —— 公用表表達式讓復雜查詢更清晰

在實際的數據庫開發和分析中,我們常常會遇到復雜的多層嵌套查詢,這樣的 SQL 語句不僅難以閱讀,也容易出錯。 這時候就需要使用一個非常實用又優雅的關鍵字 —— WITH! 它可以幫助我們將復雜的子查詢提取出來并命名,從…

要在 Linux 不聯網服務器 上部署并運行 Gitee 上的 vue-vben-admin 項目,并且該項目使用的是 pnpm 管理依賴

目錄 ? 目標:在不聯網服務器中成功運行 vue-vben-admin 👉 你需要的最終環境: ? 場景:完全離線部署并運行開發/構建環境 🧱 步驟總覽: 🛠 詳細操作流程 ? 第 1 步:聯網機器準…

中國風國潮通用PPT模版

中國風答辯總結匯報類通用PPT模版,古風PPT通用模版,國學精品PPT模版,中國風韻PPT模版 中國風國潮通用PPT模版:https://pan.quark.cn/s/59cea717fe8d

【nvidia-H100-ib排障實戰2】:服務器 InfiniBand 網絡性能問題深度分析

目錄 InfiniBand 網絡性能日志: 實際生產服務器 InfiniBand 網絡性能問題深度分析 一、核心問題定位:mlx5_1 設備性能異常 二、問題詳細分析 1. mlx5_1 設備異常原因推測 (1)硬件連接故障 (2)驅動或固件問題 (3)資源爭用或配置錯誤 2. CPU 頻率不一致問題 三…

Postgresql中不同數據類型的長度限制

目錄 一、字符類型(Character Types) 二、二進制類型(Binary Types) 三、數值類型(Numeric Types) 四、其他類型 五、全局限制:單行數據總大小 示例對比表 注意事項 驗證命令 在 Postgr…

Unity Hub 新建項目,啟動 Unity 閃退的解決辦法

問題: Win11: Unity 閃退,提示 Could not connect project 原因 這是 Firewall & network protection 在作怪,真的我感覺 Windows Defender 就從來沒干過好事,那個遍地是病毒的年代微軟你不搞個殺毒軟件,現在…

學習打卡---回溯

回溯,所有回溯都可以轉換成樹形結構進行解決 我們將樹形結構分為縱向和橫向兩個方面 遞歸是縱向循環,也就是縱向方面,到了葉子節點就收網回溯 循環是橫向循環,也就是橫向方面,到了數組末尾就結束 回溯屬于是將二叉樹的…

阿里云獲取DASHSCOPE_API_KEY教程,以及配置DASHSCOPE_API_KEY環境變量

要獲取阿里云的 DASHSCOPE_API_KEY(通義千問API密鑰),需要在阿里云平臺上完成開通服務和創建密鑰的流程。以下是具體步驟: 1. 開通通義千問API服務 登錄阿里云賬號 訪問 阿里云官網,使用賬號密碼或RAM用戶登錄。 進入…

《去哪兒網Redis高并發實戰:從問題定位到架構升級》

去哪兒網Redis高并發實戰:從問題定位到架構升級 在互聯網行業競爭日益激烈的當下,高并發場景下的系統性能優化一直是技術團隊面臨的重要挑戰。對于去哪兒網這類在線旅游平臺來說,節假日期間的流量高峰更是對系統架構的嚴峻考驗。本文將深入剖…

Zynq + FreeRTOS + YAFFS2 + SQLite3 集成指南

Zynq FreeRTOS YAFFS2 SQLite3 集成指南 一、系統架構設計 #mermaid-svg-qvuP6slyza89wsiT {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-qvuP6slyza89wsiT .error-icon{fill:#552222;}#mermaid-svg-qvuP6slyz…