当前位置: 首页 > news >正文

网站数据库模版深圳网站建设黄浦网络 骗钱

网站数据库模版,深圳网站建设黄浦网络 骗钱,郑州国际装备制造业会展网站的建设,深圳福步外贸论坛在 Django 中处理全局异常,有几种常见的方式,通常目标是: 捕获项目中未被单独处理的错误统一返回给前端(如 JSON 响应 / 自定义错误页)方便记录日志1. 使用 Django 自带的全局异常处理机制 Django 有一些内置的全局错误…

Django 中处理全局异常,有几种常见的方式,通常目标是:

  • 捕获项目中未被单独处理的错误
  • 统一返回给前端(如 JSON 响应 / 自定义错误页)
  • 方便记录日志

1. 使用 Django 自带的全局异常处理机制

Django 有一些内置的全局错误视图(默认在 django.views.defaults 中):

  • 404 错误:handler404
  • 500 错误:handler500
  • 403 错误:handler403
  • 400 错误:handler400

你可以在项目的 urls.py 中进行重写:

# urls.py
from django.conf.urls import handler404, handler500, handler403, handler400
from django.http import JsonResponsedef custom_404(request, exception):return JsonResponse({"error": "页面未找到"}, status=404)def custom_500(request):return JsonResponse({"error": "服务器错误"}, status=500)def custom_403(request, exception):return JsonResponse({"error": "无权限访问"}, status=403)def custom_400(request, exception):return JsonResponse({"error": "错误请求"}, status=400)handler404 = custom_404
handler500 = custom_500
handler403 = custom_403
handler400 = custom_400

👉 适合处理 HTTP 层面的全局错误


2. 使用中间件捕获全局异常

如果你想在 更底层 捕获异常,可以写一个自定义中间件:

# middlewares.py
import logging
from django.http import JsonResponselogger = logging.getLogger(__name__)class GlobalExceptionMiddleware:def __init__(self, get_response):self.get_response = get_responsedef __call__(self, request):try:return self.get_response(request)except Exception as e:logger.error(f"Unhandled Exception: {str(e)}", exc_info=True)return JsonResponse({"error": "服务器内部错误"}, status=500)

然后在 settings.py 中注册:

MIDDLEWARE = [...'your_project.middlewares.GlobalExceptionMiddleware',
]

👉 适合捕获 所有未被显式处理的异常,并进行日志记录 / 统一 JSON 响应。


3. Django REST Framework (DRF) 的全局异常处理

如果你用的是 DRF,可以在 settings.py 中配置全局异常处理函数:

# settings.py
REST_FRAMEWORK = {"EXCEPTION_HANDLER": "your_project.utils.custom_exception_handler"
}

实现 custom_exception_handler

# utils.py
from rest_framework.views import exception_handler
from rest_framework.response import Response
from rest_framework import statusdef custom_exception_handler(exc, context):# 先调用 DRF 默认的异常处理response = exception_handler(exc, context)if response is None:# 没有被 DRF 识别的异常return Response({"error": "服务器内部错误"}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)# 可以统一改造返回结构return Response({"error": response.data,"status_code": response.status_code}, status=response.status_code)

👉 适合 API 项目,能让前端统一处理错误。


4. 日志系统与监控

全局异常捕获后,还需要考虑 记录日志报警。常见做法:

  • 在中间件或异常处理函数里调用 logging,写到文件或 ELK。
  • 接入 Sentry,实时监控线上异常。

✅ 总结:

  • 普通 Django 项目:用 handler404/500/403/400 + 中间件
  • API 项目(DRF):用 自定义 exception_handler
  • 日志监控:结合 logging 或 Sentry。
http://www.dtcms.com/a/528623.html

相关文章:

  • vs code 下docker使用方法,以php 项目为示例
  • 番禺网站建设哪里好深圳十大传媒公司
  • 前端常见的设计模式
  • 亚马逊云渠道商:如何通过配置自动替换构建故障自愈的云架构?
  • 豆包 Python 和 Java 的 AI 集成及模型转换
  • 深入解析C++命令模式:设计原理与实际应用
  • 商城网站建设目标上海前十名文化传媒公司
  • ExpressionVisitor 的使用场景及方法
  • 《3D端游开放世界动态天气系统与场景交互优化实践日志》
  • Date类自主实现后的反思
  • 网络渗流:爆炸渗流
  • 购物网站建设款流程国外优秀设计网站大全
  • 【C++】STL容器-stack和queue的使用与模拟实现
  • numpy学习笔记(持续更新)
  • linux schedule函数学习
  • 教育培训网站有哪些辽宁网站建设企业定制公司
  • Python机器学习---6.集成学习与随机森林
  • 厦门网站建设公司新能源汽车价格表图片及价格表
  • 二分查找栈堆动态规划
  • 【脚本】提取phpstudy网站对应的PHP版本
  • 沈阳做平板网站移动互联网开发是干什么的
  • StreamX部署详细步骤
  • java 正则表达式 所有的优先级
  • 做pc端网站平台网站做游戏活动
  • 【开发者导航】全自动 AI 视频创作与发布工具:LuoGen-agent
  • 网站 空间地址是什么苏州网站制作公司
  • Qt-多线程编程:互斥量 信号量
  • TERMSRV!WinStationLpcThread函数和TERMSRV!WinStationLpcHandleConnectionRequest函数分析
  • 网站体验方案wordpress更改前端引用
  • vue-day01