django 创建多类型用户的最佳方法

2024-05-27

我想在 django 中创建多个用户。我想知道哪种方法是最好的..

class Teachers(models.Model):
    user = models.ForeignKey(User)
    is_teacher = models.BooleanField(default=True)
    .......

或者我应该使用..

class Teacher(User):
    is_teacher = models.BooleanField(default=True)
    .......

或者我必须制作自定义用户模型...... 哪个有利于创建多种类型的用户......?


Django 没有多个用户 - 它只有一个用户,然后根据权限用户可以做不同的事情。

因此,首先 - django 中只有一种用户类型。如果您使用默认的身份验证框架,则该用户的模型称为User, from django.contrib.auth.models.

如果你想在 django 中自定义用户行为,你可以做三件事:

  1. 自定义您对它们进行身份验证的方式 https://docs.djangoproject.com/en/1.7/topics/auth/customizing/#authentication-backends。默认情况下,身份验证是使用存储密码的数据库完成的。您可以针对 facebook/google 等或针对您现有的用户数据库进行身份验证 - 例如,如果您位于 Windows 网络上,则使用 ActiveDirectory。

  2. 创建自定义权限 https://docs.djangoproject.com/en/1.6/topics/auth/customizing/#custom-permissions,并根据这些权限,限制用户可以执行的功能。默认情况下,在每个模型上 - django 都会添加基本权限“可以编辑”,“可以删除”,“可以读取”。您可以创建自己的权限,然后检查用户是否具有这些特定权限。

  3. 您可以存储有关用户的额外信息以及 django 通常存储的任何信息。有两种方法可以实现此目的,具体取决于您需要的定制程度。如果 django 默认提供的所有内容都适合您,并且您想要做的就是存储有关用户的额外信息,您可以扩展用户模型 https://docs.djangoproject.com/en/1.7/topics/auth/customizing/#extending-user- 在以前的版本中,这称为创建自定义配置文件。您的另一个选择是创建你自己的User model https://docs.djangoproject.com/en/1.7/topics/auth/customizing/#substituting-a-custom-user-model,如果您想要更深入的定制。自定义用户模型最常见的用途是您想使用电子邮件地址作为用户名。

您不必执行所有这三个操作,事实上有时您想做的就是存储一些额外的信息或让他们使用他们的电子邮件地址进行身份验证;在某些应用程序中,您必须修改所有三个位置。

就你而言,因为你想做的就是存储额外的信息关于一个用户,你需要扩展用户模型 https://docs.djangoproject.com/en/1.7/topics/auth/customizing/#extending-user,通过创建一个引用的模型User(注意:您不继承自User):

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.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

django 创建多类型用户的最佳方法 的相关文章

随机推荐