我尝试在登录时将用户设置为已通过身份验证。每当我尝试对它们进行身份验证时,它都会返回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)
答案 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)