Django自带的用户认证auth模块
- 作者: 五速梦信息网
- 时间: 2026年04月04日 13:44
from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin, BaseUserManager
定义UserProfile这个类的管理类
class UserManager(BaseUserManager):
use_in_migrations = True
def _create_user(self, email, password, **extra_fields):
"""<br/>
Creates and saves a User with the given email and password.<br/>
"""<br/>
if not email:<br/>
raise ValueError('The given email must be set')<br/>
email = self.normalize_email(email)<br/>
user = self.model(email=email, **extra_fields) # 创建对象<br/>
user.set_password(password) # 把密码加密之后再写入数据库<br/>
user.save(using=self._db) # 保存到数据库<br/>
return user
def create_user(self, email, password=None, **extra_fields):
extra_fields.setdefault('is_staff', False) # 给字典设置默认值<br/>
extra_fields.setdefault('is_superuser', False)<br/>
return self._create_user(email, password, **extra_fields)
def create_superuser(self, email, password, **extra_fields):
extra_fields.setdefault('is_staff', True)<br/>
extra_fields.setdefault('is_superuser', True)
if extra_fields.get(‘is_staff’) is not True:
raise ValueError('Superuser must have is_staff=True.')<br/>
if extra_fields.get('is_superuser') is not True:<br/>
raise ValueError('Superuser must have is_superuser=True.')<br/>
return self._create_user(email, password, **extra_fields)
class UserProfile(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(<br/>
max_length=255,<br/>
unique=True,<br/>
validators=[RegexValidator(r'^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$', '邮箱格式不正确'),]<br/>
)<br/>
is_staff = models.BooleanField(<br/>
_('staff status'),<br/>
default=False,<br/>
help_text=_('Designates whether the user can log into this admin site.'),<br/>
)<br/>
is_active = models.BooleanField(<br/>
_('active'),<br/>
default=True,<br/>
help_text=_(<br/>
'Designates whether this user should be treated as active. '<br/>
'Unselect this instead of deleting accounts.'<br/>
),<br/>
)<br/>
name = models.CharField('名字', max_length=32)<br/>
department = models.ForeignKey('Department', default=None, blank=True, null=True)<br/>
mobile = models.CharField(<br/>
'手机',<br/>
max_length=32,<br/>
default=None,<br/>
blank=True,<br/>
null=True,<br/>
validators=[RegexValidator(r'^1[3-9]\d{9}$', '手机格式不正确')]<br/>
)
memo = models.TextField(‘备注’, blank=True, null=True, default=None)
date_joined = models.DateTimeField(auto_now_add=True)
EMAIL_FIELD = ‘email’ # 发送邮件的字段
USERNAME_FIELD = 'email' # 用来唯一确定auth中的用户<br/>
REQUIRED_FIELDS = ['name'] # auth指定除了上面两个配置项的字段还有哪些字段需要必填
class Meta:
verbose_name = '账户信息'<br/>
verbose_name_plural = "账户信息"
def clean(self):
super(UserProfile, self).clean()<br/>
# 对邮件进行校验<br/>
self.email = self.__class__.objects.normalize_email(self.email)
def get_full_name(self):
# The user is identified by their email address<br/>
return self.name
def get_short_name(self):
# The user is identified by their email address<br/>
return self.email
def str(self): # unicode on Python 2
return self.name
给ORM添加管理类
objects = UserManager()
- 上一篇: django自带的用户认证和form表单功能
- 下一篇: Django自带的用户认证
相关文章
-
django自带的用户认证和form表单功能
django自带的用户认证和form表单功能
- 互联网
- 2026年04月04日
-
Django自学教程 pdf
Django自学教程 pdf
- 互联网
- 2026年04月04日
-
Django组件(四) Django之Auth模块
Django组件(四) Django之Auth模块
- 互联网
- 2026年04月04日
-
Django自带的用户认证
Django自带的用户认证
- 互联网
- 2026年04月04日
-
Django中的跨域请求问题
Django中的跨域请求问题
- 互联网
- 2026年04月04日
-
Django中的CSRF(跨站请求伪造)
Django中的CSRF(跨站请求伪造)
- 互联网
- 2026年04月04日






