""" 用户模块序列化器 """ from rest_framework import serializers from .models import User class UserSerializer(serializers.ModelSerializer): """用户序列化器""" class Meta: model = User fields = ['id', 'phone', 'nickname', 'avatar', 'gender', 'birthday', 'created_at'] read_only_fields = ['id', 'phone', 'created_at'] class UserDetailSerializer(serializers.ModelSerializer): """用户详情序列化器(管理端)""" class Meta: model = User fields = ['id', 'phone', 'nickname', 'avatar', 'is_active', 'is_staff', 'created_at', 'updated_at'] class PhoneLoginSerializer(serializers.Serializer): """手机号一键登录序列化器""" phone = serializers.CharField(max_length=20, help_text='手机号') # 实际项目中应该有验证码或token # code = serializers.CharField(max_length=10, help_text='验证码') def validate_phone(self, value): # 简单验证手机号格式 if not value.isdigit() or len(value) != 11: raise serializers.ValidationError('手机号格式不正确') return value class UpdateUserSerializer(serializers.ModelSerializer): """更新用户信息序列化器""" class Meta: model = User fields = ['nickname', 'avatar', 'gender', 'birthday'] class SendCodeSerializer(serializers.Serializer): """发送验证码序列化器""" phone = serializers.RegexField( regex=r'^1[3-9]\d{9}$', error_messages={'invalid': '手机号格式不正确'} ) class CodeLoginSerializer(serializers.Serializer): """验证码登录序列化器""" phone = serializers.RegexField( regex=r'^1[3-9]\d{9}$', error_messages={'invalid': '手机号格式不正确'} ) code = serializers.CharField(max_length=6, min_length=6)