无法使用提供的凭据django DRF登录
我第一次尝试django REST api时,我正在进行一些验证,现在我在运行此命令时遇到了这个错误:[curl-X POST-d“username=&password=” 错误:{“非\u字段\u错误”:[“无法使用提供的凭据登录。”]} views.py:无法使用提供的凭据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]
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您可以共享已安装的应用程序吗?