Привет, в этом посте мы научимся создавать пользовательскую модель в Django 3 И мы также изменим функциональность входа в систему по умолчанию администратора Django. Мы будем использовать электронную почту и пароль для входа в систему.
Мне пришлось сделать пользовательский пользователь для моего приложения, я смог сделать модель, но проблема заключалась в том, что команда CreateSuperuser не работает. Чтобы отлаживать его, мне пришлось провести много исследований, и проблема была в том, что большинство ресурсов в то время устарели, поэтому я решил написать этот пост.
theshubhagrwl/django_custom_user_app
Я сделал GitHub Репо, поэтому, если вы хотите, вы можете напрямую использовать это (инструкции есть)
Прежде всего, сделайте Django Project и создайте приложение под названием пользователи
Теперь мы можем начать редактировать файл моделей.py в приложении нашего пользователя
Перед редактированием давайте сделаем некоторую теорию. Что такое Менеджеры в Джанго?
Менеджер – это интерфейс, через который операции запросов базы данных предоставляются моделям Django. По крайней мере, один менеджер существует для каждой модели в приложении Django.- Django Docs
Проще говоря, менеджеры предоставляют нам способ управлять нашей моделью. Мы можем реализовать это, сделав нашу модель подклассом класса менеджера. Класс менеджера – это место, где такие команды, как CreateSuperuser можно отредактировать. Теперь откройте модели.py и поместите в него следующий код
Самая важная вещь, которую нужно отметить, это is_staff и is_superuser атрибуты. Создание опечатки в этом может вызвать трудную отладку.
Что мы сделали здесь?
Мы сделали Мангер Для нашей пользовательской модели. Внутри этого мы сделали 2 функции, называемые Создать пользователя и create_superuser . create_user , как следует из названия, создает нового пользователя и create_superuser используется для создания суперпользователя путем настройки is_staff и is_superuser к истинному. После менеджера у нас есть обычная модель. Мы установили Имя пользователя Никто, потому что мы не хотим включать имя пользователя. Username_field В нем указано, что мы объявляем «электронную почту». Это должно быть уникальным. session_token это дополнительное поле. У меня есть это, потому что я делал свой табличный токен. Последняя строка моделей.py указывает, что Customuser является объектом пользовательского управляющего.
После того, как вы сделали модель, откройте файл stens.py и добавьте в нее строку
AUTH_USER_MODEL = 'users.CustomUser'
Django позволяет переопределить пользовательскую модель по умолчанию, предоставляя значение для настройки AUTH_USER_MODEL, которая ссылается на пользовательскую модель. Эта пунктирная пара описывает имя приложения Django (которое должно быть в вашем insted_apps) и имя модели Django, которую вы хотите использовать в качестве модели пользователя. -Django Док
Теперь вы можете запустить команды миграции и создать также суперпользователь.
py manage.py makemigrations py manage.py migrate py manage.py createsuperuser
Он попросит вашу электронную почту и пароль. Дайте ему детали.
Не забудьте зарегистрировать приложение в администраторе
admin.site.register(CustomUser)
Теперь вы можете запустить сервер и войти в систему со своей электронной почтой и паролем на панели администратора
Оригинал: “https://dev.to/theshubhagrwl/custom-user-model-in-django-3-32k7”