#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.