Django Rest Framework Ошибка запроса Postman 'POST'

У меня все еще возникает эта ошибка при попытке выполнить почтовый запрос из postman.

{
    "username": [
        "This field is required."
    ],
    "password": [
        "This field is required."
    ]
}

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

Как я могу решить эту проблему?

Views.py


class PlayThingList(viewsets.ModelViewSet):
    serializer_class = PlayThingSerializer
    queryset = PlayThing.objects.all()

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

Serializers.py

class PlayThingSerializer(serializers.ModelSerializer):
    class Meta:
        model = PlayThing
        fields = '__all__'


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

urls.py


router = DefaultRouter()
router.register('playthings', PlayThingList, basename='playthings')
router.register('users', UserViewset)




urlpatterns = [
    path('', include(router.urls)),
]

Попробуйте добавить следующее в свой POSTMAN

Заголовки раздел:

KEY Value
Accept application/json

Раздел тела (выберите raw или x-www-form-urlencoded):

KEY Value
username (your username)
password (your password)

В вашем userviewset вы используете UserSerializer. Таким образом, вы не можете создавать пользователей. Чтобы создать пользователя, вам придется расширить функциональность registeruser.

Посмотрите код из rest-framework и используйте ту же логику в методе create вашего userviewset. если вы хотите зарегистрировать пользователя.

Registeruser - это совсем другое дело.

Framework Rest по умолчанию имеет url для регистрации пользователей, используйте этот url, он обработает все за вас.

Проблема решена!

Проблема была связана с методом token create(). Я изменил

create(user) to create(user=user)

ref: serializers.py

def create(self, validated_data):
        user = User.objects.create_user(**validated_data)
        Token.objects.create(user=user)
        return user

Спасибо всем, кто помог!

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