"detail": "Учетные данные для аутентификации не были предоставлены." postman django

Попытка выполнить авторизацию по токенам Когда я делаю POST-запрос через postman, он выдает ошибку "detail": "Authentication credentials were not provided."

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated',
    ],
    'DEFAULT_PARSER_CLASSES':[
        'rest_framework.parsers.JSONParser',
    ],
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.TokenAuthentication',
        #'rest_framework.authentication.SessionAuthentication',
        #'rest_framework_simplejwt.authentication.JWTAuthentication',
    ]

manager.py

from django.contrib.auth.models import BaseUserManager
from django.core.exceptions import ValidationError
from django.core.validators import validate_email
from django.utils.translation import gettext_lazy as _

class UserManager(BaseUserManager):
    def email_validator(self, email):
        try:
            validate_email(email)
        except ValidationError:
            raise ValueError(_("please ener a valid email"))
        
    def create_user(self, email, username, password, **extra_fields):
        if email:
            email=self.normalize_email(email)
            self.email_validator(email)
        else:
            raise ValueError(_("an email adress is required"))
        if not username:
            raise ValueError(_("an username is required"))
        user=self.model(email=email, username=username, **extra_fields)
        user.set_password(password)
        user.save(using=self._db)
        return user
    
    def create_superuser(self, email, username, password, **extra_fields):
        extra_fields.setdefault("is_staff", True)
        extra_fields.setdefault("is_superuser", True)
        extra_fields.setdefault("is_verified", True)

        if extra_fields.get("is_staff") is not True:
            raise ValueError(_("is staff must be true for admin user"))
        
        if extra_fields.get("is_superuser") is not True:
            raise ValueError(_("is superuser must be true for admin user"))
        user = self.create_user(
            email, username, password, **extra_fields
        )
        user.save(using=self._db)
        return user

<
from django.shortcuts import render
from rest_framework.generics import GenericAPIView
from .serializers import UserSerializer
from rest_framework.response import Response
from rest_framework import status
from .utils import send_code_to_user

class RegisterUserView(GenericAPIView):
    serializer_class=UserSerializer

    def post(self, request):
        user_data=request.data
        serializer=self.serializer_class(data=user_data)
        if serializer.is_valid(raise_exception=True):
            serializer.save()
            user=serializer.data
            send_code_to_user(user['email'])
            return Response({
                'data':user,
                'message':f'hi{user.username}'
            }, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

serializers.py

from rest_framework import serializers
from .models import Users


class UserSerializer(serializers.ModelSerializer):
    password = serializers.CharField(max_length=68, min_length=6, write_only=True)
    password2 = serializers.CharField(max_length=68, min_length=6, write_only=True)

    class Meta:
        model=Users
        fields=['email', 'username', 'password', 'password2']

    def validate(self, attrs):
        password = attrs.get('password', '')
        password2 = attrs.get('password2', '')
        if password != password2:
            raise serializers.ValidationError("passwords do not mutch")
        return attrs

    def create(self, validated_data):
        user=Users.objects.create_user(
            email=validated_data['email'],
            username=validated_data.get['username'],
            password=validated_data.get['password'],
        )


        return user    

urls.py (app)

from django.urls import path
from .views import RegisterUserView


urlpatterns = [
    path('register/', RegisterUserView.as_view(), name='register')
]

urls.py (проект)

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
   path('admin/', admin.site.urls),
   path('api/v1/auth/', include('auth_app.urls')),
]
<<<0>>

>

Актуально устанавливать аутентификацию для этого api, когда пользователь хочет зарегистрироваться, когда он/она еще не зарегистрировался и не аутентифицировался в вашем приложении, и вам нужно сказать в вашем views.py

permission_classes = [permissions.AllowAny]

также при использовании User and Password лучше использовать простой jwt и установить access_token для пользователя и в postman, передав доступ в авторизации в berear tap аутентифицировать его

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