사용자 정의 User(둘)
원래 권한 모듈을 포함하는 User 모델을 사용자 정의하려면 User 모델이 AbstractBaseUser 클래스를 계승하는 동시에PermissionsMixin 클래스도 계승하도록 해야 합니다.
Django에서 제공하는 PermissionsMixin은 Django 권한 모델을 지원하는 데 필요한 모든 방법과 데이터베이스 필드를 제공하는 추상적인 모델입니다.
PermissionsMixin은 다음과 같은 메서드와 속성을 제공합니다.
다음은 Permission이 포함된 사용자 정의 User 모델의 예입니다.
from django.db import models
from django.contrib.auth.models import (
BaseUserManager, AbstractBaseUser, PermissionsMixin
)
class MyUserManager(BaseUserManager):
def _create_user(self, email, password, date_of_birth, is_staff, is_superuser, **extra_fields):
if not email:
raise ValueError('The given email must be set')
email = self.normalize_email(email)
user = self.model(
email=email,
date_of_birth=date_of_birth,
is_staff=is_staff,
is_active=True,
is_superuser=is_superuser,
**extra_fields
)
user.set_password(password)
user.save(using=self._db)
return user
def create_user(self, email, date_of_birth, password=None, **extra_fields):
return self._create_user(email, password, date_of_birth, is_staff=False, is_superuser=False, **extra_fields)
def create_superuser(self, email, date_of_birth, password, **extra_fields):
return self._create_user(email, password, date_of_birth, is_staff=True, is_superuser=True, **extra_fields)
class MyUser(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(
verbose_name='email address',
max_length=255,
unique=True,
)
date_of_birth = models.DateField()
#
is_active = models.BooleanField(default=True)
# is_admin = models.BooleanField(default=False)
is_staff = models.BooleanField(default=False)
# MyUser
objects = MyUserManager()
# User
# ( unique=True)
USERNAME_FIELD = 'email'
# createsuperuser
#
REQUIRED_FIELDS = ['date_of_birth']
# email
def get_full_name(self):
return self.email
# email
def get_short_name(self):
return self.email
def __str__(self): # __unicode__ on Python 2
return self.email
세팅하는 거 잊지 마.py에는 다음 항목이 추가됩니다.
AUTH_USER_MODEL = 'myUserApp.MyUser'
셸에서 사용자 정의 User 모델을 확인합니다.
superuser를 만들려면 다음과 같이 하십시오.
from myUserApp.models import MyUser
u = MyUser.objects.create_superuser(
email='[email protected]',
date_of_birth='1988-8-8',
password='********',
)
모든 사용 권한을 보려면 다음과 같이 하십시오.
u.get_all_permissions()
>>> {'auth.add_group', 'myUserApp.delete_myuser', 'auth.delete_group',
'sessions.change_session', 'myUserApp.change_myuser',
'admin.add_logentry', 'contenttypes.change_contenttype',
'myUserApp.add_myuser', 'auth.add_permission',
'contenttypes.add_contenttype', 'admin.delete_logentry',
'contenttypes.delete_contenttype', 'auth.delete_permission',
'auth.change_group', 'auth.change_permission', 'admin.change_logentry',
'sessions.add_session', 'sessions.delete_session'}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.