Some checks failed
Build and Deploy Backend / build-and-deploy (push) Failing after 1m36s
62 lines
1.8 KiB
Python
62 lines
1.8 KiB
Python
"""
|
|
用户模块序列化器
|
|
"""
|
|
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)
|