尝试通过电子邮件进行身份验证

时间:2015-10-29 16:42:59

标签: python django

我尝试在登录时将用户设置为已通过身份验证。每当我尝试对它们进行身份验证时,它都会返回None。我之所以这么做是因为我使用的是电子邮件,而不是用户名?

#views.py
def login(request):
    email = request.POST.get("email", "")
    password = request.POST.get("password", "")

    flancer = Freelancer.objects.get(email=email)

    user = authenticate(username=email, password=password)


#models.py
class Freelancer(models.Model):
    email = models.EmailField()
    first_name = models.CharField(max_length=128, primary_key=True)
    surname = models.CharField(max_length=128)
    university = models.CharField(max_length=256)
    password = models.CharField(max_length=256)
    verified = models.BooleanField(default=False)
    created_date = models.DateTimeField(default=timezone.now)

3 个答案:

答案 0 :(得分:0)

当您从默认设置移动时,这会有点棘手。如果没有看到settings.py,我可能没有完整的答案。

AUTH_USER_MODEL = appname.freelancer'

我还会看一下导入用户模型:

impo django.contrib.auth.models,

class Freelancer(AbstractBaseUser):

答案 1 :(得分:0)

Django使用电子邮件地址进行身份验证非常复杂。目前,您的代码存在太多问题(例如未加密的密码字段)以修复Stack Overflow答案。

Django docs has a guide用于创建使用电子邮件地址作为用户名的自定义用户模型。我建议你解决这个问题,然后回到Stack Overflow,提出你遇到的任何具体问题。

然后,您可以使用内置的authentication views,而不是编写自己的登录视图。

答案 2 :(得分:0)