есть код который позволяет регистрировать пользователя, логиниться получая token и потом смотреть информацию по токену и выходить с аккаунта. Как мне сделать custom user со своими полями например name, lastname, age?
Инструкция и код -
https://github.com/FlDanyT/my_Django_documentation...
Код:
models.py
import secrets
from django.db import models
from django.contrib.auth.models import User # Встроенная модель пользователя Django
class UserToken(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='token')
token = models.CharField(max_length=64, unique=True, blank=True)
def generate_token(self):
self.token = secrets.token_hex(32) # Генерируем безопасный токен
self.save()
return self.token
def __str__(self):
return f'Token for {self.user.username}' # Ответ серверу
serializers.py
from django.contrib.auth.models import User
from rest_framework import serializers
from .models import UserToken
class UserRegisterSerializer(serializers.ModelSerializer):
password = serializers.CharField(write_only=True, min_length=8)
class Meta:
model = User
fields = ['username', 'email', 'password']
def create(self, validated_data):
user = User.objects.create_user(**validated_data)
UserToken.objects.create(user=user) # Создаем токен для пользователя
return user
class UserLoginSerializer(serializers.Serializer):
username = serializers.CharField()
password = serializers.CharField(write_only=True)
def validate(self, data):
from django.contrib.auth import authenticate
user = authenticate(username=data['username'], password=data['password'])
if not user:
raise serializers.ValidationError("Неверные учетные данные")
token, _ = UserToken.objects.get_or_create(user=user)
token.generate_token()
return {'token': token.token}