Как я могу переопределить, как rest-auth сохраняет пользователей?

#django #django-rest-auth

#django #django-rest-auth

Вопрос:

На моем сайте есть серверная часть django, и он использует пакет django-rest-auth для аутентификации. Я хочу изменить эту функцию внутри сериализаторов rest-auth:

 path_to_my_virtenv/lib/python3.7/site-packages/rest_auth/registration/serializers.py

class RegisterSerializer(serializers.Serializer): 

    def get_cleaned_data(self):
        return {
            'username': self.validated_data.get('username', ''),
            'password1': self.validated_data.get('password1', ''),
            'email': self.validated_data.get('email', '')
        }

  

Я попытался отредактировать его напрямую, и все работало так, как я хотел, однако у меня есть подозрение, что редактировать файлы внутри пакетов сайта virtenv не очень хорошая идея. Есть ли способ переопределить их из моего приложения django? Что лучше всего сделать в моей ситуации?

Ответ №1:

Вы правы, редактирование этого файла — худший вариант. Вы никогда не должны редактировать код сторонних приложений на своем локальном компьютере (за исключением случаев, когда вы хотите протестировать какой-то крайний случай).

Django Rest Auth позволяет изменять класс сериализатора для всех конечных точек, вы можете найти его в документации.

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

1. Большое вам спасибо, это решение отлично сработало для меня. Интересно, однако, что я могу сделать, если я хочу что-то изменить внутри стороннего приложения, которое не предоставляет настройки для изменения своих файлов? Должен ли я разветвить его на github, изменить его там и переустановить? Или я должен загрузить его содержимое и превратить его в свое собственное приложение непосредственно на моем локальном компьютере? Или, может быть, что-то еще вообще?

2. @warpfactorten Если это не срочный случай, вы можете попросить владельца приложения добавить эту функцию. Но если вы не хотите этого ждать, вам следует разветвить github и добавить необходимую функцию. Вы даже можете открыть запрос на извлечение в исходное репозиторий, если ваша работа полезна и для других. Редактирование кода на вашем локальном компьютере не подходит по многим причинам: он остается только на вашем компьютере, вы не можете его упаковать, он исчезнет, если будет обновление для приложения и так далее…

3. очень хорошо объяснил зейнел, изменение кода сторонних приложений чрезвычайно опасно. При следующей переустановке зависимостей все исчезнет. И это невозможно отследить в git.