Ошибка пользовательского исключения django rest_framework - PullRequest
0 голосов
/ 17 февраля 2019

Я новичок в django rest_framework, и попытался создать персонализированный ответ на ошибки в django!.

Исключения Django Rest Framework

После этого всекажется довольно простым, но ошибка импорта возрастает, когда я пытаюсь добавить пользовательское исключение.

Settings.py

REST_FRAMEWORK = {
    'EXCEPTION_HANDLER': 'project.restapi.utils.custom_exception_handler'
}

Значение исключения ImportError:
Можетне импортировать «project.restapi.utils.custom_exception_handler» для настройки API «EXCEPTION_HANDLER».AttributeError: модуль 'project.restapi.utils' не имеет атрибута 'custom_exception_handler'

custom_exception_handler.py

from rest_framework.views import exception_handler

def custom_exception_handler(exc, context):
    # Call REST framework's default exception handler first,
    # to get the standard error response.
    response = exception_handler(exc, context)

    # Now add the HTTP status code to the response.
    if response is not None:
        response.data['status_code'] = response.status_code

    return response

model.py

class Users(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer

    def retrieve(self, request, *args, **kwargs):
        # call the original 'list' to get the original response
        response = super(Users, self).retrieve(request, *args, **kwargs) 

        response.data = {"collection": {"data": response.data},"statusCode":response.status_code,"version":"1.0"}
        # customize the response data
        if response is not None:
            return response
        else:
            # return response with this custom representation
            response.data = {"collection": {"data": response.data},"statusCode":response.status_code,"version":"1.0","error":response.exception}
            return response

Итакна вышеупомянутой модели работает нормально, за исключением случаев, когда я пытаюсь ударить пользователя, которого нет в базе данных, должно появиться сообщение об ошибке - не найдено, поэтому я попытался настроить не найденное так, чтобы оно имело смысл для меня.вот и все

Я пытался разобраться, но сложно это сделать !!,

Django Версия: 2.1.5 Python - 3.7.0

1 Ответ

0 голосов
/ 17 февраля 2019

Поскольку ваш custom_exception_handler находится в файле с именем custom_exception_handler.py.Вы можете попробовать изменить настройку EXCEPTION_HANDLER на это:

REST_FRAMEWORK = {
    'EXCEPTION_HANDLER': 'project.restapi.utils.custom_exception_handler.custom_exception_handler'
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...