使用自定义模型User进行Django身份验证

时间:2012-04-25 13:15:13

标签: django django-models django-forms django-admin django-views

对于我的需求内置模型用户是不够的...所以我有我自己的模型UserProfile,我希望通过这个模型在网站上进行身份验证(UserProfile不继承用户模型,根本不与它相关)。 / p>

我的模特:

class UserProfile(models.Model):
    password = models.CharField(max_length = 40)
    email = models.EmailField(max_length = 72, unique = True)

    ## Add this so that you can use request.user.is_authenticated
    def is_authenticated(self): 
        return True

但内置身份验证使用模型User。

所以我想了解如何更改,所以身份验证使用我的模型UserProfile与所有身份验证功能?

一个好的教程会很棒!

(视图,模型和身份验证中的逐步步骤)

PS:我知道我可以在其他模型中存储额外的数据,但我不想那样

2 个答案:

答案 0 :(得分:3)

这是一个更极端的例子,但说明了你想做的事情。作者不仅替换了身份验证后端使用的用户模型,还使用SQLAlchemy而不是Django ORM。 http://tomforb.es/using-a-custom-sqlalchemy-users-model-with-django

重点是您需要编写后端authenticateget_user方法来检索自定义用户模型。如果您还想支持权限,则需要编写has_perm

答案 1 :(得分:0)

我使用了this文章,它对我来说足够好,希望它对你有用。

苏丹