无法使用提供的凭据django DRF登录

无法使用提供的凭据django DRF登录,django,django-rest-framework,Django,Django Rest Framework,我第一次尝试django REST api时,我正在进行一些验证,现在我在运行此命令时遇到了这个错误:[curl-X POST-d“username=&password=” 错误:{“非\u字段\u错误”:[“无法使用提供的凭据登录。”]} views.py: class CreateUserAPIView(CreateAPIView): serializer_class = CreateUserSerializer permission_classes = [AllowAny]

我第一次尝试django REST api时,我正在进行一些验证,现在我在运行此命令时遇到了这个错误:[curl-X POST-d“username=&password=” 错误:{“非\u字段\u错误”:[“无法使用提供的凭据登录。”]}

views.py:

class CreateUserAPIView(CreateAPIView):
    serializer_class = CreateUserSerializer
    permission_classes = [AllowAny]

    def create(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        self.perform_create(serializer)
        headers = self.get_success_headers(serializer.data)
        # We create a token than will be used for future auth
        token = Token.objects.create(user=serializer.instance)
        token_data = {"token": token.key}
        return Response(
            {**serializer.data, **token_data},
            status=status.HTTP_201_CREATED,
            headers=headers
        )

序列化程序.py

class CreateUserSerializer(serializers.ModelSerializer):
    username = serializers.CharField()
    password = serializers.CharField(write_only=True,
                                     style={'input_type': 'password'})

    class Meta:
        model = get_user_model()
        fields = ('username', 'password', 'first_name', 'last_name')
        write_only_fields = ('password')
        read_only_fields = ('is_staff', 'is_superuser', 'is_active',)

    def create(self, validated_data):
        user = super(CreateUserSerializer, self).create(validated_data)
        user.set_password(validated_data['password'])
        user.save()
        return user

url.py


urlpatterns = [
    path('auth/login/',
        obtain_auth_token,
        name='auth_user_login'),
    path('auth/register/',
        CreateUserAPIView.as_view(),
        name='auth_user_create'),
    path('auth/logout/',
        LogoutUserAPIView.as_view(),
        name='auth_user_logout')
]


您所指的教程要求您加入,因此请为自己创建一个,然后在登录时使用这些信息

在终端中,您将键入:
python manage.py createsuperuser

然后,系统将提示您,如下所示:

Username (leave blank to use 'ubuntu'): <YOUR_USERNAME>
Email address: <email> // you can leave it as blank
Password: <YOUR_PASSWORD>
Password (again): <YOUR_PASSWORD>
Username(留空使用“ubuntu”):
电子邮件地址://您可以将其保留为空
密码:
密码(再次):
然后再次调用,用输入值替换介于之间的值:

curl-xpost-d“用户名=&password=”http://127.0.0.1:8000/api/auth/login/

你在错误的端点上使用了
curl
,你的例子是
auth/login/
,而创建的例子是
auth/register/
,你能验证一下吗?我正在做这个教程,我现在很困惑??你困惑什么?你被困在哪里了,告诉我们好帮助你我在turtor中做了完全相同的事情ial,但它不起作用??我已经发布了一个答案,有帮助吗?谢谢,但我做了完全相同的事情,没有working@itjuba您可以共享已安装的应用程序吗?