首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >DRF响应和Django响应的自定义异常处理程序

DRF响应和Django响应的自定义异常处理程序
EN

Stack Overflow用户
提问于 2017-06-01 09:31:53
回答 1查看 845关注 0票数 0

我想定义一个自定义异常类并引发它。

Django rest框架有一个钩子,我可以在其中定义自定义异常处理程序,

(http://www.django-rest-framework.org/api-guide/exceptions/#custom-exception-handling)

Django还提供了一种通过中间件实现该功能的方法。

问:如果我想处理drf视图和常规django视图中的异常,那么在django中间件中处理它们就足够了吗?

还是我需要独立的处理程序来处理DRF视图?

换句话说,DRF请求/响应是否也通过django中间件?

EN

回答 1

Stack Overflow用户

发布于 2022-08-26 05:58:36

在项目目录中的任何位置创建一个名为exception_middleware.py的脚本(最好是在主app目录中),并添加以下内容:

代码语言:javascript
代码运行次数:0
运行
复制
import logging
from django.shortcuts import render
from django.conf import settings

logger = logging.getLogger("StackDriverHandler")


class ExceptionMiddleware(object):
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        response = self.get_response(request)
        if settings.DEBUG:
            host = "http"
        else:
            # TODO: set for https
            host = "http"

        if response.status_code == 500:
            return render(request, "error_templates/500.html")

        if response.status_code == 404:
            return render(request, "error_templates/404.html")

        if response.status_code == 403:
            return render(request, "error_templates/403.html")

        return response
   def process_exception(self, request, exception):
        try:
            logger.info(request, extra=exception)
        except Exception as e:
            logger.error(exception)
        return None
   def process_exception(self, request, exception):
        try:
            logger.info(request, extra=exception)
        except Exception as e:
            logger.error(exception)
        return None

在Django项目的settings.py文件中的中间件部分中添加到该类的路径(最后)。

就这样。该中间件将在每个请求期间执行,并将检查您是否处于调试中,如果存在异常,则该中间件将为您创建一条消息:)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44303780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档