1234567891011121314151617181920212223242526272829303132 |
- from rest_framework import serializers
- from api.models import User
- from django.contrib.auth.hashers import make_password
- class UserRegisterSerializer(serializers.ModelSerializer):
- class Meta:
- model = User
- fields = ('username', 'password')
- extra_kwargs = {
- 'password': {'write_only': True}
- }
- def validate_username(self, value):
- if len(value) < 5 or len(value) > 12:
- raise serializers.ValidationError("用户名长度需在5-12位之间")
- if User.objects.filter(username=value).exists():
- raise serializers.ValidationError("用户名已存在")
- return value
- def validate_password(self, value):
- if len(value) < 6 or len(value) > 20:
- raise serializers.ValidationError("密码长度需在6-20位之间")
- return value
- def create(self, validated_data):
- # 使用固定盐值加密
- validated_data['password'] = make_password(
- validated_data['password'],
- salt='vrviewer',
- hasher='pbkdf2_sha256'
- )
- return User.objects.create(**validated_data)
|