如何提高Djang的410误差

2024-06-06 08:16:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在返回410个错误,而不是返回404。基本上,我不想调用raise Http404('some error message'),而是调用raise Http410('some error message')快捷方式。

我很困惑,因为在django.http中,函数Http404只是:

class Http404(Exception):
    pass

因此,如果我做同样的事情并创建Http410函数,我会假设它看起来像:

class Http410(Exception):
    pass

但是,这样做会返回异常,但会出现500个错误页。如何重新创建Http404异常的魔力?我应该注意,我需要从我的模型(而不是视图)中引发异常,这样我就不能只返回一个HttpResponseGone。

提前谢谢!

更新: 我完全了解HttpResponseGone,并在我最初的问题中提到了这一点。我已经知道如何在我的观点中回报这一点。我的问题是:如何引发Http 410异常,类似于如何引发Http 404异常?我希望能够在任何地方提出这个例外,而不仅仅是在我的观点。谢谢!


Tags: 函数httpmessage错误exceptionerrorsomepass
3条回答
from django.http import HttpResponse
return HttpResponse(status=410)

在视图处理程序中返回HttpResponseGone,它是^{}的子类。

Django不包含这种机制,因为gone应该是正常的工作流,而不是错误条件,但是如果您不想将其视为返回响应和异常,只需实现一个middleware

class MyGoneMiddleware(object):
    def process_exception(self, request, exception):
        if isinstance(exception, Http410):
            return HttpResponseGone("Gone!")
        return None

相关问题 更多 >