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
Спасибо всем, кто помог!