Django用户通过电子邮件和密码登录

2024-03-28 23:43:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚刚完成了Django教程,想要创建一个需要用户使用电子邮件地址和密码登录的网站。这完全独立于Django令人敬畏的内置管理站点(只有一两个特殊的人可以访问管理员)。在

我的问题是:

  1. 我是否应该创建一个单独的数据库表来存储用户凭据、信息等?还是应该使用现有的Django表?

  2. 如前所述,用户应该使用电子邮件地址登录。这对Django来说会是个问题吗?

其他最佳做法将不胜感激。谢谢您。在


Tags: django用户信息数据库密码站点网站电子邮件
3条回答

用户登录不需要单独的表。仅仅利用Auth framework允许用户使用他们的电子邮件地址登录是非常简单的,但是有几种不同的方法来处理这个问题。您需要从:https://docs.djangoproject.com/en/1.7/topics/auth/customizing/

首先什么是中间件 这是一个轻量级的低级别“插件”系统,用于全局更改Django的输入或输出。在

你可以在这里读到如何activating-middleware

创建电子邮件后端middleware将帮助您实现基于电子邮件地址作为用户名的用户身份验证

    def authenticate(self, username=None, password=None):
        try:
            user = User.objects.get(email=username)
            if user.check_password(password):
                return user
        except User.DoesNotExist:
            return None 

布兰登是对的, 最简单的方法是定制后端,而不是Django默认值 我们来吧 在你的设置.py公司名称:

AUTHENTICATION_BACKENDS = ('accounts.backend.EmailOrUsernameModelBackend')

然后在帐目里/后端.py公司名称:

^{pr2}$

现在你可以用你的用户名或电子邮件登录 玩得开心

相关问题 更多 >