Django поставляется с множеством вещей из коробки, поэтому я люблю его использовать. Процесс аутентификации по умолчанию требует, чтобы люди выбирали уникальное имя пользователя при регистрации, что может быть бессмысленным для некоторых типов сайтов.

Если я работаю над проектом Django, в котором социальная авторизация не имеет смысла, я использую настраиваемую модель пользователя, чтобы убедиться, что люди могут зарегистрироваться, используя только адрес электронной почты и пароль. Это должен быть общий вариант использования для пользовательских моделей, потому что он упоминается в документации здесь.

Я почти каждый раз забываю, как это делать, и, как правило, сталкиваюсь с одними и теми же ловушками (например, с созданием суперпользователей), поэтому я пишу это как ресурс для себя в будущем и для тех, кто пытается использовать вместо этого адрес электронной почты. имени пользователя для авторизации. Я надеюсь, что мой процесс неправильный, поскольку он кажется запутанным, поэтому, пожалуйста, поправьте меня, если есть лучшие способы добиться того же.

Вам необходимо выполнить этот процесс перед первым переносом проекта. Этот процесс будет работать только для нового проекта.

  • В файле models.py для вашего приложения добавьте настраиваемый менеджер пользователей, который занимается созданием пользователя, обрабатывая электронную почту как уникальный идентификатор, а не имя пользователя следующим образом:
  • Этот пользовательский менеджер пользователей необходим, потому что модель пользователя не используется обычно. Вот код нашей пользовательской модели в том же файле models.py:

По сути, это то же самое, что и модель User по умолчанию для Django, за исключением того, что для параметра USERNAME_FIELD установлено значение «email», а некоторые поля удалены.

Вы также можете добавить дополнительные поля в свою пользовательскую модель, но рекомендуется добавить любые дополнительные поля через связь с другой моделью.

  • Затем, наконец, в вашем файле settings.py вы хотите добавить:
 AUTH_USER_MODEL = ‘your_app_name.User’

С этого момента вместо ссылки на модель пользователя с помощью User вы должны использовать либо settings.AUTH_USER_MODEL, либо get_user_model (). Вы можете узнать, когда использовать здесь.

На этом этапе вы сможете запустить manage.py makemigrations, затем manage.py migrate и auth должны работать нормально, не требуя имени пользователя.

Надеюсь, у вас все прошло гладко. Вы должны проверить официальную документацию для получения дополнительной информации.

Пожалуйста, дайте мне знать, если у вас возникнут вопросы, и я постараюсь помочь.