Простое приложение на Django.Instablog.Регистрация пользователей
В этой статье мы создадим модель для хранения информации пользователей , а также создадим страницы регистрации и авторизации
Создадим новое приложение users
python manage.py startalp users
В Джанго используется стандартная модель для пользователей. Но для нашего проекта мы создадим свою модель User
Для это мы отнаследуемся от моделей AbstractBaseUser и от миксина PermissionMixin
class User(AbstractBaseUser, PermissionsMixin):
username = models.CharField(max_length=50, unique=True)
email = models.EmailField(_('email address'), unique=True)
firstname = models.CharField(_('First name'), max_length=100, blank=True)
lastname = models.CharField(_('Last name'), max_length=100, blank=True)
is_staff = models.BooleanField(_('Staff status'), default=False)
is_active = models.BooleanField(_('Active'), default=True)
date_joined = models.DateTimeField(_('date joined'),
default=timezone.now)
avatar = models.ImageField(upload_to='users', null=True, blank=True)
objects = UserManager()
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
class Meta:
verbose_name = 'Пользователь'
verbose_name_plural = 'Пользователи'
def get_full_name(self):
if all([self.first_name, self.last_name]):
full_name = '{0} {1}'.format(self.first_name, self.last_name)
return full_name.strip()
else:
return self.email
def get_short_name(self):
return self.first_name
Создадим менеджер
Также мы создадим менеджер для нашей модели. Это нужно для того , чтобы мы могли добавить методы создания нового пользователя create_user и администратора create_superuser
class UserManager(BaseUserManager):
def create_user(self, username, email, password=None, **kwargs):
if not email:
raise ValueError('Users must have an email address')
user = self.model(username=username,
email=UserManager.normalize_email(email), )
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, email, password):
username = email
user = self.create_user(username, email, password)
user.is_superuser = True
user.is_staff = True
user.save(using=self._db)
return user
Теперь файл настроек settings.py в качестве модели для пользователей мы указываем созданную нами модель. И в качестве бэкенда должны указать ModelBackend.
AUTH_USER_MODEL = 'users.User'
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
)
Теперь мы создадим миграции для приложения users и применим все миграции.
Командой python manage.py ruтserver мы можем запустить наш проект.
Теперь создадим главную страницу с регистрационными полями