Ошибка API регистрации django rest: это поле обязательно для заполнения - PullRequest
0 голосов
/ 26 июня 2018

Здравствуйте, я хочу создать простой регистрационный API для моего django rest api Но когда я хочу проверить регистрацию с помощью curl, я всегда получаю эту ошибку: {"username": ["Это поле обязательно для заполнения."], "password": ["Это поле обязательно для заполнения."]}

Это мой curl cmd:

curl --request POST --url http://localhost:8000/auth/register/ --header 'content-type: application/json' --data '{"username": "user1","password": "hunter2"}'

views.py RegistrationApi

class RegistrationAPI(generics.GenericAPIView):
    serializer_class = CreateUserSerializer

    def post(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = serializer.save()
        return Response({
            "user": UserSerializer(user, context=self.get_serializer_context()).data,
            "token": AuthToken.objects.create(user)
        })

serializers.py

class CreateUserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('id', 'username', 'password')
        extra_kwargs = {'password': {'write_only': True}}

    def create(self, validated_data):
        user = User.objects.create_user(validated_data['username'],
                                        None,
                                        validated_data['password'])
        return user


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

Может, что-то не так с сериализаторами? Я уже пытался выяснить, где проблема, но я не могу ее найти

1 Ответ

0 голосов
/ 26 июня 2018

Попробуйте это:

class CreateUserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = ('id', 'username', 'email', 'password')
        extra_kwargs = {'password' : {'write_only': True}}
    def create(self, validated_data):
        user = User.objects.create_user(**validated_data)
        return user

Или обратитесь к ссылке Django Rest Framework регистрация

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...