在Django中使用多个身份验证后端的最佳实践?

我正试图在Django中为2个不同的用户实现一个认证系统。 学生(使用他的用户名和密码),开发者(使用他的电子邮件和密码)。 目前我有一个(共同的)UserProfile模型,将由Student,Developer共享。 这是我的模型代码:

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    name = models.CharField(max_length=50, null=True, blank=True)
    slug = models.SlugField(max_length=50, db_index=True, unique=True)#this will be used as his unique url identifier
    objects = UserProfileManager()

    class Meta:
        abstract = True

class Student(UserProfile):
     ''' some student specific fields might go here '''

class Developer(UserProfile):
    ''' some developer specific fields might go here '''

并在settings.py我给:

AUTH_PROFILE_MODULE = 'users.UserProfile'

我正在使用UserProfile模型进行身份验证。 但是,一旦我介绍了学生,开发人员整个事情搞砸了。 我正进入(状态

UserProfile没有属性'DoesNotExist'

(这是从UserProfileManager的存在方法),也是

SiteProfileNotAvailable

错误。 (即使在我开始编写电子邮件身份验证后端之前,我也会收到这些错误)。 我错过了什么? 什么是最好的路径来实现我想要的。


问题可能是UserProfile的抽象定义。 当你离开'abstract = True'时,事情应该起作用。 但请注意这是如何改变你的表格方案的。

链接地址: http://www.djcxy.com/p/33797.html

上一篇: Best Practice for following multiple authentication backends in Django?

下一篇: Native app rest api social login flow