from rest_framework import serializers from django.contrib.auth.models import User from django.contrib.auth import authenticate class UserSerializer(serializers.ModelSerializer): class Meta: model = User fields = ['id', 'username', 'email', 'date_joined'] read_only_fields = ['date_joined'] class RegisterSerializer(serializers.ModelSerializer): password = serializers.CharField(write_only=True, min_length=6) class Meta: model = User fields = ['username', 'email', 'password'] def create(self, validated_data): user = User.objects.create_user( username=validated_data['username'], email=validated_data.get('email', ''), password=validated_data['password'] ) return user class LoginSerializer(serializers.Serializer): username = serializers.CharField() password = serializers.CharField(write_only=True) def validate(self, data): user = authenticate(**data) if user and user.is_active: return user raise serializers.ValidationError("用户名或密码错误")