Getting the Djoser token

39 views Asked by At

Hello everyone I'm new to development. There was a problem when receiving a token during authentication via Djoser. It seems that I do everything in accordance with the documentation but I do not get the necessary result

I was trying to redefine the model to change the serializer

settings

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.AllowAny',
    ],
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.TokenAuthentication',
    ],
}

DJOSER = {
    'LOGIN_FIELD': 'email',
}

serializer

class CustomUserSerializer(UserSerializer):
    """Serializer for User"""

    is_subscribed = SerializerMethodField()

    def get_is_subscribed(self, obj):
        request = self.context.get("request")
        if request and not request.user.is_anonymous:
            user = request.user
            return Follow.objects.filter(user=user, author=obj).exists()
        return False

    class Meta:
        model = User
        fields = (
            "email",
            "id",
            "username",
            "first_name",
            "last_name",
            "is_subscribed",
        )

model user

class User(AbstractUser):
    """The user's model."""

    username = models.CharField(
        max_length=MAX_LENGTH,
        verbose_name="Имя пользователя",
        unique=True,
        db_index=True,
    )

    first_name = models.CharField(
        max_length=MAX_LENGTH,
        verbose_name="Имя")
    last_name = models.CharField(
        max_length=MAX_LENGTH,
        verbose_name="Фамилия")

    email = models.EmailField(
        verbose_name="Электронная почта",
        unique=True)

    is_subscribed = models.BooleanField(default=False)

    USERNAME_FIELD = "email"
    REQUIRED_FIELDS = ["username", "first_name", "last_name"]

    class Meta:
        verbose_name = "Пользователь"
        verbose_name_plural = "Пользователи"
        ordering = ("id",)

    def __str__(self):
        return self.username
0

There are 0 answers