django 用户模型
时间: 2023-03-30 13:00:44 浏览: 85
Django 用户模型是 Django 框架中的一个重要组件,它提供了用户认证和授权的功能。通过 Django 用户模型,我们可以轻松地创建用户账户、管理用户权限、实现用户登录等功能。同时,Django 用户模型也支持自定义用户模型,以满足不同应用的需求。
相关问题
django 多用户模型案例代码
下面是一个 Django 多用户模型的示例代码:
```python
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, PermissionsMixin
from django.db import models
class UserManager(BaseUserManager):
def create_user(self, email, password=None, **extra_fields):
if not email:
raise ValueError('The Email field must be set')
email = self.normalize_email(email)
user = self.model(email=email, **extra_fields)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, email, password=None, **extra_fields):
extra_fields.setdefault('is_staff', True)
extra_fields.setdefault('is_superuser', True)
return self.create_user(email, password, **extra_fields)
class User(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(unique=True)
first_name = models.CharField(max_length=30, blank=True)
last_name = models.CharField(max_length=30, blank=True)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
date_joined = models.DateTimeField(auto_now_add=True)
objects = UserManager()
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
def get_full_name(self):
full_name = '%s %s' % (self.first_name, self.last_name)
return full_name.strip()
def get_short_name(self):
return self.first_name
def __str__(self):
return self.email
```
在这个示例代码中,我们使用了 Django 的内置 `AbstractBaseUser` 和 `BaseUserManager` 类来定义了一个自定义的用户模型。这个模型包含了一个 `UserManager` 类,用于管理用户的创建和更新。同时,我们还定义了一些基本的用户属性,如电子邮件地址、密码、名称等。用户模型还包含了 `is_active` 和 `is_staff` 属性,用于控制用户的活动状态和管理员权限。最后,我们还定义了一些方法,如获取用户全名和短名,以及将用户对象转换为字符串。
django 普通用户模型和管理员模型
Django 默认提供了两个用户模型:
1. 普通用户模型:django.contrib.auth.models.User
这个模型是 Django 自带的默认用户模型,包含了一些基本的用户属性,例如用户名、密码、电子邮件等等。对于大部分简单的应用来说,这个模型已经足够了。
2. 管理员模型:django.contrib.auth.models.AbstractBaseUser
这个模型可以用来自定义用户模型,通常用于需要更复杂的用户属性或者需要和已有系统进行集成的场景。这个模型需要自己定义一些额外的字段和方法,例如 is_superuser、is_staff 等等。
需要注意的是,如果你想要使用自定义用户模型,你需要在 settings.py 中指定 AUTH_USER_MODEL。例如:
```
AUTH_USER_MODEL = 'myapp.MyUserModel'
```
其中,myapp 是你的应用名,MyUserModel 是你定义的用户模型类名。