zyc ffe92f7b15 Initial commit: 即梦视频生成平台
- web/: React + Vite + TypeScript 前端
- backend/: Django + DRF + SimpleJWT 后端
- prototype/: HTML 设计原型
- docs/: PRD 和设计评审文档
- test: 单元测试 + E2E 极限测试
2026-03-13 09:59:33 +08:00

54 lines
1.6 KiB
Python

from rest_framework import serializers
from django.contrib.auth import get_user_model
from rest_framework_simplejwt.tokens import RefreshToken
User = get_user_model()
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', 'username', 'email', 'is_staff')
class RegisterSerializer(serializers.Serializer):
username = serializers.CharField(min_length=3, max_length=20)
email = serializers.EmailField()
password = serializers.CharField(min_length=6, write_only=True)
def validate_username(self, value):
if User.objects.filter(username=value).exists():
raise serializers.ValidationError('该用户名已被注册')
return value
def validate_email(self, value):
if User.objects.filter(email=value).exists():
raise serializers.ValidationError('该邮箱已被注册')
return value
def create(self, validated_data):
user = User.objects.create_user(
username=validated_data['username'],
email=validated_data['email'],
password=validated_data['password'],
)
return user
class LoginSerializer(serializers.Serializer):
username = serializers.CharField()
password = serializers.CharField(write_only=True)
class TokenResponseSerializer(serializers.Serializer):
"""Response serializer for auth endpoints."""
user = UserSerializer()
tokens = serializers.SerializerMethodField()
def get_tokens(self, obj):
refresh = RefreshToken.for_user(obj)
return {
'access': str(refresh.access_token),
'refresh': str(refresh),
}