Как хранить ответ на ошибку http в Django

Я получаю name и age и сохраняю в базе данных через DRF и создаю промежуточное ПО, которое проверяет ошибки и ошибки ответа и status_code и когда возникают ошибки промежуточного ПО, например 404 "Страница не найдена, неверный URL" и т.д. Я хочу сохранить это 'error and status_code' в базе данных. так как я могу пройти через это.

Модель:

class Userdata(models.Model):
name = models.CharField(max_length=150)
age = models.IntegerField()

class Errorcode(models.Model):
status_code = models.CharField(max_length=150)
message = models.CharField(max_length=300)

просмотров:

class UserdataList(generics.ListCreateAPIView):
queryset = Userdata.objects.all()
serializer_class = UserdataSerializer

class UserdataDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = Userdata
serializer_class = UserdataSerializer

class ErrorcodeList(generics.ListCreateAPIView):
queryset = Errorcode.objects.all()
serializer_class = ErrorcodeSerializer

class ErrorcodeDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = Errorcode
serializer_class = ErrorcodeSerializer

Middleware:

def get_response(message="", status_code=200):
return {
   "status_code" : status_code,
   "error" : message,
}

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

def __call__(self, request):

   response = self.get_response(request)

   if response.status_code == 500:
       response = get_response(
           message="Internal server error, please try again later",
           status_code=response.status_code
       )
       return JsonResponse(response, status=response['status_code'])

   if response.status_code == 404 and "Page not found" in str(response.content):
       response = get_response(
           message="Page not found, invalid url",
           status_code=response.status_code
       )
       return JsonResponse(response, status=response['status_code'])

   return response

Middleware:

def usererror(store_response):
    try:
        save_response = Errorcode.objects.create(message=str(store_response))
        save_response.save()
    except Exception as e:
        logger.error(e.__str__())


def get_response(message, status_code):
    return {
        "status_code": status_code,
        "error": message,
    }


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

    def __call__(self, request):

        response = self.get_response(request)

        if response.status_code == 500:
            response = get_response(
                message="Internal server error, please try again later",
                status_code=response.status_code
            )
            logger.error(response)
            usererror(response)

            return JsonResponse(response, status=response['status_code'])

        if response.status_code == 404 and "Page not found" in str(response.content):
            response = get_response(
                message="Page not found, invalid url",
                status_code=response.status_code
            )
            logger.error(response)
            usererror(response)

            return JsonResponse(response, status=response['status_code'])

        if response.status_code == 404:
            response = get_response(
                message="Detail not found",
                status_code=response.status_code
            )
            logger.error(response)
            usererror(response)

            return JsonResponse(response, status=response['status_code'])

        if response.status_code == 505:
            response = get_response(
                message="HTTP version not support",
                status_code=response.status_code
            )
            logger.error(response)
            usererror(response)

            return JsonResponse(response, status=response['status_code'])

        return response


Вернуться на верх