如何在Django中为TemplateView和APIView编写一个自定义异常,它将为reques返回自定义错误

2024-09-30 00:25:39 发布

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

我已经写信了

class CustomApiException(APIException):

    #public fields
    detail = None
    status_code = None

    # create constructor
    def __init__(self, status_code, message):
        #override public fields
        CustomApiException.status_code = status_code
        CustomApiException.detail = message
        CustomApiException.message = message

它对APIView有效,但对TemplateView则会出错。编写自定义API异常的正确方法是什么?该异常将适用于两个视图。你知道吗


Tags: selfnonemessagefieldsinitdefstatuscreate
1条回答
网友
1楼 · 发布于 2024-09-30 00:25:39

在视图中,定义模板视图如下

from django.http import HttpResponseForbidden

#rest of the views
class yourview(TemplateView):
    def get(request):
        try:
            #business logic
        except CustomApiException:
            return HttpResponseForbidden()

这将引发Error 403

如果您希望呈现自己的模板而不是引发HttpResponseForbidden,那么可以按照以下方式将异常变量传递给视图,并适当地编写视图的响应

class yourview(TemplateView):
    def get(request):
        try:
            #business logic
        except CustomApiException as e:
            status_code = e.status_code
            detail = e.message
            message = e.message
            #Handle the response here.

相关问题 更多 >

    热门问题