Ответ не имеет атрибута «имя пользователя» - PullRequest
1 голос
/ 06 июня 2019

Я пытаюсь вернуть пользовательский Ответ для моего универсального представления API, но он не работает, так как я получаю, что у объекта «Ответ» нет атрибута «имя пользователя», ошибка при вызове API

Вот что ясделано до сих пор:

Я обрабатываю ошибку исключений DoesNotExist, затем возвращаю Ответ (из структуры отдыха django).

class UniqueEmailAPI(generics.RetrieveAPIView):
  permission_classes = [
    permissions.AllowAny,
  ]

  serializer_class = UserSerializer

  def get_object(self):
    email = self.request.data['email']
    try:
      return User.objects.get(email= email)
    except ObjectDoesNotExist:
      return Response(status=status.HTTP_204_NO_CONTENT)

UserSerializer:

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('id', 'username', 'email')

Журнал исключений: StackTrace

1 Ответ

1 голос
/ 06 июня 2019

Ваш сериализатор пытается сериализовать ваш Response(status=status.HTTP_204_NO_CONTENT) ответ.Он попытается сериализовать все, что вы вернете из get_object, с помощью сериализатора, если вы не выдадите ошибку.

Вы можете вызвать ошибку 404, используя метод get_object_or_404 Джанго, чтобы инфраструктура зналавместо этого он должен вернуть ответ об ошибке.

Вы можете сделать что-то такое:

from django.shortcuts import get_object_or_404
get_object_or_404(User, email= email)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...