Это сводит меня с ума ... Я читаю тонны сообщений о том, как хэш-пароль при создании пользователя, но по какой-то причине просто не работает, и я не могу аутентифицироваться.django rest framework - хэширование пароля
Я использую Джанго 1.8.1 и Джанго-покоя рамки 3.1.2
Мой код:
views.py:
class UserViewSet(mixins.CreateModelMixin,
mixins.RetrieveModelMixin,
mixins.ListModelMixin,
viewsets.GenericViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
permission_classes = (IsAuthenticated,)
---- EDIT ----
С помощью этого кода пароль отображается как есть в базе данных и не хеширован, поэтому я не могу выполнить аутентификацию.
serializers.py:
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('username', 'first_name', 'last_name', 'password')
extra_kwargs = {'password': {'write_only': True}}
def create(self, validated_data):
user = User(
first_name=validated_data['first_name'],
username=validated_data['username'],
last_name=validated_data['last_name']
)
user.set_password(validated_data['password'])
user.save()
return user
А также - что делает метод serializer.save()
вызов ??
Любая идея ??? любая помощь будет оценена!
Спасибо, я попробую. И оставить метод create в UserViewSet как есть? А также, какой метод точно выполняет вызов serializer.save()? –
Вы можете удалить метод create в своем представлении. serializer.save() знает, когда вызывать метод обновления или метод создания сериализатора. –
Но разве URL не переводится в представление? Я имею в виду, без метода create в представлении ViewSet, как он будет знать, чтобы вызвать serializer.save()? Просто пытаюсь понять все это. –