登录身份验证在Django中不起作用?

时间:2019-03-13 14:23:53

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

我正在尝试创建一个登录系统,以验证用户是否在db中。但这不会验证用户身份。我不知道我在做什么错,我真的不知道此身份验证如何检查模型数据库信息。

请向我解释身份验证的作用以及它现在将要做什么,请帮助我解决问题

这是我的注册视图

def register(request):
    user = UserProfile()
    if request.method == 'POST':
        user.username = request.POST.get('Username')
        user.email = request.POST.get('email')
        user.password = request.POST.get('Password')
        user.confirm_password = request.POST.get('ConfirmPassword')
        user.profession = request.POST.get('Proffesionname')
        user.save()
        return redirect(reverse('login'))
    return render(request,'social_app/register.html',{'user':user}) 

这是登录视图

def login(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('Password')
        user = authenticate(username=username, password=password)
        if user:
            if user.is_active:
                login(request,user)
                return HttpResponseRedirect('/profile/')
            else:
                return  HttpResponse('User no longer active')
        else:
            print(f'username :{username}')
    return render(request,'social_app/login.html')              

这是UserProfile模型

class UserProfile(models.Model):
    user = models.OneToOneField(User,on_delete = models.CASCADE)
    email = models.EmailField(max_length = 50)
    password = models.CharField(max_length = 20)
    confirm_password = models.CharField(max_length = 20)
    profession = models.CharField(max_length = 50)

    def __str__(self):
        return self.user.username

1 个答案:

答案 0 :(得分:1)

如@Alasdair所述,您应该使用Django auth functions

也许这个程序对您有帮助Django Allauth