Принятый ответ ссылается на весь проект GitHub без объяснения того, какие его части актуальны, а некоторые из них устарели, поэтому я постараюсь поделиться тем, что я узнал.
django-social-auth устарела и заменена на social-app-django , которая интегрирует Django с проектом python-social-auth .
Документация по python-social-auth Трубопроводы актуальна. В конвейере по умолчанию это этап, на котором генерируется имя пользователя:
# Make up a username for this person, appends a random string at the end if
# there's any collision.
'social_core.pipeline.user.get_username',
Реализация get_username
показывает поведение по умолчанию. Нам придется скопировать эти аспекты:
- Он обеспечивает уникальность имени пользователя, проверяя
storage.user.user_exists(username=...)
и изменяя имя пользователя до тех пор, пока оно не станет уникальным.
- Возвращает словарь
{'username': '...'}
, который передается на следующие этапы в конвейере.
Чтобы запросить у пользователя, нам нужен пользовательский «частичный» этап конвейера . Это позволяет нам приостановить конвейер, чтобы дождаться, когда пользователь отправит форму имени пользователя, а затем возобновить ее, как только мы получим имя пользователя.