/
Handdas
/
Task_Manager
Обзор
Документация
Войти
/
Handdas
/
Task_Manager
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
backend/application/serializers.py
81 строка
2 KB
Your Name
first things
09 сен 2025, 13:25
09 сен 2025, 13:25
0a4d486
Код
Авторство
О чём код?
from rest_framework import serializers from django.contrib.auth import authenticate from django.contrib.auth.password_validation import validate_password from .models import UserModel, Tasks class UserRegistrationSerializer(serializers.ModelSerializer): """ User registration serializer """ password = serializers.CharField( write_only = True, validators = [validate_password] ) password_confirm = serializers.CharField() class Meta: model = UserModel fields = ['username', 'email', 'password', 'password_confirm', 'first_name', 'last_name', 'is_staff'] def validate(self, attrs): if attrs['password'] != attrs['password_confirm']: raise serializers.ValidationError( {"password": "Passwords must match"} ) return attrs def create(self, validated_data): validated_data.pop('password_confirm') user = UserModel.objects.create_user(**validated_data) return user class UserLoginSerializer(serializers.Serializer): """ User login serializer """ email = serializers.EmailField() password = serializers.CharField(write_only = True) def validate(self, attrs): email = attrs.get('email') password = attrs.get('password') if email and password: user = authenticate( request = self.context.get('request'), username = email, password = password ) if not user: raise serializers.ValidationError( f'{email} is not found.' ) if not user.is_active: raise serializers.ValidationError( 'User account is disabled.' ) attrs['user'] = user return attrs else: raise serializers.ValidationError( 'Must provide email and password' ) class Meta: model = UserModel fields = ['username', 'password'] class UsersSerializer(serializers.ModelSerializer): class Meta: model = UserModel fields = ['id', 'username', 'email', 'birth_date', 'first_name', 'last_name'] class TasksSerializer(serializers.ModelSerializer): task_id = serializers.PrimaryKeyRelatedField( queryset=Tasks.objects.all(), ) class Meta: model = Tasks fields = ['user_id', 'task_id', 'title', 'task', 'deadline', 'created_at']