django 1.10中处理多用户类型的正确方法
我在谷歌上做了一些研究,找到了许多不同的解决方案来处理多用户类型。为了让我的问题更清楚,这里是要求 1) 有两种类型的用户-(一种是普通用户,另一种是开发人员) 2) 两种用户类型将具有相同的表单字段-(用户名、电子邮件、密码、密码(确认)) 下面是我尝试过的django 1.10中处理多用户类型的正确方法,django,django-models,django-forms,django-allauth,Django,Django Models,Django Forms,Django Allauth,我在谷歌上做了一些研究,找到了许多不同的解决方案来处理多用户类型。为了让我的问题更清楚,这里是要求 1) 有两种类型的用户-(一种是普通用户,另一种是开发人员) 2) 两种用户类型将具有相同的表单字段-(用户名、电子邮件、密码、密码(确认)) 下面是我尝试过的 class customUser(AbstractBaseUser): user_choice = ( ('G', 'General'), ('D', 'Developer'), )
class customUser(AbstractBaseUser):
user_choice = (
('G', 'General'),
('D', 'Developer'),
)
user_type = models.charField(choices=user_choices, max_length=2, default='G')
class mainUser(customUser):
type = models.OneToOneField('customUser')
我是否必须明确处理用户名、电子邮件、密码和重新密码字段
我使用django allauth进行单用户注册和登录。我现在是否必须以不同的方式工作 如果您需要的只是视图中的不同逻辑,我会按照Jens在评论中的建议去做。使用
配置文件
扩展基本用户
模型,如下所示:
from django.contrib.auth.models import User
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
user_choice = (
('G', 'General'),
('D', 'Developer'),
)
user_type = models.charField(choices=user_choices, max_length=2, default='G')
然后在注册时添加选择user\u type
的方法,或者只提供两种不同的注册视图
在您的视图中,您需要依赖于帐户类型的逻辑:
def my_view(request):
if request.user.profile.user_type == 'G':
# do stuff for General users
else:
# do Developer stuff
基于您所共享的内容,似乎您最好只使用
配置文件
模型:看,您实际上需要构建自定义用户类型吗?也许仅仅添加一个链接到标准用户模型的模型就足够了,除非您需要一些特殊的逻辑。从您在这里描述的内容来看,您似乎不需要有不同的模型。@LaurentS您能给我一个创建两个不同用户的大致代码吗?用户将有选择注册过程的选项。如上所述,该选项是注册为开发者和注册为普通用户。不以自定义方式建立注册。@pythonLover用户类型之间有什么区别?您是否需要在他们的配置文件中存储不同的信息,或者该类型只会触发视图中的差异等?只是视图中的差异。我是否必须为开发人员和常规人员创建不同的注册表单视图?这是您的设计决定。我不认为你有任何理由这么做。您可能只需对标准注册表单进行子类化,并添加一个输入来选择用户想要的帐户类型。