Reputation: 152
When I create a user password remains in plain text. Also Im using signals to create user profiles related to users. Though I use the set_password method passwords are not encrypting.
Serializer.py
class UserSerializerAPI(serializers.ModelSerializer):
class Meta:
model = User
fields = ['username','email','password','is_teacher']
extra_kwargs = {"password":{"write_only":True}}
def create(self,validated_data):
username = validated_data['username']
email = validated_data['email']
password = validated_data['password']
user_obj = User(
username = username,
email = email
)
user_obj.set_password(password)
user_obj.save()
return user_obj
views.py
class createuser(CreateAPIView):
serializer_class = UserSerializerAPI
queryset = MyUser.objects.all()
Upvotes: 2
Views: 1201
Reputation: 116
you can code like this`
class RegisterSerializer(serializers.ModelSerializer):
password1 = serializers.CharField(write_only=True)
class Meta:
model = User
fields = ('username', 'email', 'password','password1', 'is_teacher',)
def validate(self, attr):
validate_password(attr['password'])
return attr
def create(self, validated_data):
user = User.objects.create( # this line will solve your problem
username=validated_data['username'],
is_teacher=validated_data['user_type'],
email=validated_data['email'],
)
user.set_password(validated_data['password'])
user.save()
return user
Best Regards
Upvotes: 2