serializers.py 1.1 KB

1234567891011121314151617181920212223242526272829303132
  1. from rest_framework import serializers
  2. from api.models import User
  3. from django.contrib.auth.hashers import make_password
  4. class UserRegisterSerializer(serializers.ModelSerializer):
  5. class Meta:
  6. model = User
  7. fields = ('username', 'password')
  8. extra_kwargs = {
  9. 'password': {'write_only': True}
  10. }
  11. def validate_username(self, value):
  12. if len(value) < 5 or len(value) > 12:
  13. raise serializers.ValidationError("用户名长度需在5-12位之间")
  14. if User.objects.filter(username=value).exists():
  15. raise serializers.ValidationError("用户名已存在")
  16. return value
  17. def validate_password(self, value):
  18. if len(value) < 6 or len(value) > 20:
  19. raise serializers.ValidationError("密码长度需在6-20位之间")
  20. return value
  21. def create(self, validated_data):
  22. # 使用固定盐值加密
  23. validated_data['password'] = make_password(
  24. validated_data['password'],
  25. salt='vrviewer',
  26. hasher='pbkdf2_sha256'
  27. )
  28. return User.objects.create(**validated_data)