首页 > 解决方案 > django中的登录身份验证

问题描述

我想在 django 中为自定义用户模型使用身份验证。我刚刚为自定义用户模型创建了身份验证。但它没有验证用户名和密码。任何人都可以帮助我弄错代码。

这是我的views.py文件:

from django.shortcuts import render, redirect
from django.contrib.auth.models import User
from django.contrib.auth import authenticate, login

def loginpage(request):
 if request.method =='POST':
    username = request.POST['username']
    password = request.POST['password']
    user = authenticate(request,username=username,password=password)
    if user is not None:
        login(request,user)
        return redirect('profile')
    else:
        return render(request, 'login.html', {})

标签: djangopython-3.xdjango-views

解决方案


您的身份验证逻辑错误。因为您提供了查询集来进行身份验证功能。您可以直接提供用户名和密码。有一个基于doc进行身份验证的示例

改变你的request.POST.['username']with request.POST.get("username"), request.POST.['password']withrequest.POST.get("password")

from django.contrib.auth import authenticate
user = authenticate(username='john', password='secret')
if user is not None:
    # User exist
else:
    # No user founded with this username and password

推荐阅读