Django没有多个用户 – 它只有一个用户,然后根据权限用户可以做不同的事情.
所以,从一开始 – 在django中只有一个用户类型.如果使用默认身份验证框架,则此用户的模型称为User,来自django.contrib.auth.models.
如果要在django中自定义用户行为,可以执行以下三项操作:
> Customize how you authenticate them.默认情况下,使用存储密码的数据库进行身份验证.您可以针对facebook / google等进行身份验证或针对现有用户数据库进行身份验证 – 例如,如果您使用的是Windows网络,则使用ActiveDirectory.
> Create custom permissions,并根据这些权限限制用户可以执行的功能.默认情况下,在每个模型上 – django将添加基本权限“可以编辑”,“可以删除”,“可以读取”.您可以创建自己的,然后检查用户是否具有这些特定权限.
>您可以存储有关用户的额外信息,以及django通常存储的内容.有两种方法可以执行此操作,具体取决于您需要多少自定义.如果django默认提供的所有内容都适合您,而您想要做的就是存储有关用户的额外信息,您可以使用extend the user model – 在以前的版本中,这称为创建自定义配置文件.如果您想要更深入的自定义,那么您拥有的另一个选项是create your own User model.自定义用户模型的最常见用途是,如果要使用电子邮件地址作为用户名.
您不必全部三个,事实上有时您只想存储一些额外信息或使用他们的电子邮件地址进行身份验证;在某些应用程序中,您必须修改所有三个位置.
在您的情况下,由于您要做的只是存储有关用户的额外信息,您需要通过创建引用User的模型(注意:您不从User继承)来extend the user model:
class Profile(models.Model):
user = models.OneToOneField(User)
department = models.CharField(max_length=200, default='Computer Science')
is_teacher = models.BooleanField(default=False)
is_student = models.BooleanField(default=True)
# .. etc. etc.