При использовании django rest frame work modlerserializers пароли не хэшируются

#django #django-rest-framework

#джанго #django-rest-фреймворк #django #django-rest-framework

Вопрос:

если я использую класс ModelSerializer из django-rest-framework, как я могу убедиться, что пароли хэшируются? поскольку вызов ModelSerializer.save() не хэширует поля, называемые «паролем»? есть ли способ указать, что поле должно быть хэшировано в «Meta:»?

Ответ №1:

Чтобы выполнить такое преобразование, вы можете сделать две вещи:

Если вы говорите о пользовательской модели Django, вы могли бы определить pre_save метод в сериализаторе, который вызывает User.set_password .

Комментарии:

1. Я думаю, что это более чистое решение

Ответ №2:

В итоге я изменил несериализованный объект запроса и хэшировал пароль перед его сериализацией django упрощает это с помощью make_password

     def prehash(self, request):            
        password = request.DATA['password']
        password = make_password(password)
        request = request.DATA
        request = request.copy()
        request.update({'password':password})
        return request