4

Ich versuche, eine API für meine Benutzerregistrierung mit Django Rest Framework zu erstellen. Ich habe einen Serializer von dem Schritt folgt aus dem api-guideWie Hash Django Benutzer Passwort in Django Rest Framework?

class CreateUserSerializer(serializers.ModelSerializer): 
    class Meta: 
    model = User 
    fields = ('email', 'username', 'password') 
    extra_kwargs = {'password': {'write_only': True}} 

    def create(self, validated_data): 
    user = User(
     email=validated_data['email'], 
     username=validated_data['username'] 
    ) 
    user.set_password(validated_data['password']) 
    user.save() 
    return user 

aber ich halte die Invalid password format or unknown hashing algorithm. für meine neu erstellten Benutzer zu bekommen. Ich habe versucht, make_password von django.contrib.auth.hashers zu verwenden, aber ich kann dieses Problem immer noch nicht lösen.

Dank

+0

Diese helfen könnte überschreiben http://stackoverflow.com/questions/ 27586095/why-isnt-mein-django-user-models-password-hashed –

+0

danke wird versuchen –

Antwort

7

Sie können es auf diese Weise versuchen

from django.contrib.auth.hashers import make_password 

user = User.objects.create(
     email=validated_data['email'], 
     username=validated_data['username'], 
     password = make_password(validated_data['password']) 
) 
0

Sie können die perform_create Methode in CreateAPIView

from rest_framework.generics import CreateAPIView 

class SignUpView(CreateAPIView): 
    serializer_class = SignUpSerializers 

    def perform_create(self, serializer): 
     instance = serializer.save() 
     instance.set_password(instance.password) 
     instance.save() 
Verwandte Themen