Django 为什么用户身份验证不成功?

Django 为什么用户身份验证不成功?,django,django-authentication,Django,Django Authentication,我正在尝试使用django身份验证系统构建登录页面 以下是视图 from django.contrib import auth def auth_view(request): username = request.POST.get('username','') password = request.POST.get('password','') print request.POST user = auth.authenticate(username=usernam

我正在尝试使用django身份验证系统构建登录页面 以下是视图

from django.contrib import auth
def auth_view(request):
    username = request.POST.get('username','')
    password = request.POST.get('password','')
    print request.POST
    user = auth.authenticate(username=username, password=password)  #returns user object if match else None
    if user is not None:
        auth.login(request, user)  #make user status as logged in now using django login function
        return HttpResponseRedirect('/todos')
    else:
        return HttpResponseRedirect('/accounts/invalid')
login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Login page</title>
</head>
<body>
<h2>login page</h2>
<hr>
<form action="/accounts/auth/" method="post">{% csrf_token %}
    username: <input type="text" name="username" value="" id="username"><br>
    password: <input type="password" name="password" value="" id="password"><br>
    <input type="submit" value="Login">

</form>

</body>
</html>

变量
user
返回
None
,即使用户/密码正确。当我将此行
user=auth.authenticate(username=username,password=password)
更改为实际用户和密码,例如
user=auth.authenticate(username=“peter”,password=“p@$w0rD275”)
它已成功登录

命令行输出

>>>result=auth.authenticate(username='admin', password='adkd92')
>>>print result
None
>>>result=auth.authenticate(username='admin', password='admin123')
>>>print result
admin

也许您有一个简单的打字错误,在以下几行末尾有额外的逗号

username = request.POST.get('username',''),  # <---
password = request.POST.get('password',''),  # <---

username=request.POST.get('username','')#你有表格吗,还是只是你要发的帖子?我是说来自django的AuthForm或其他什么?用户名和密码有值吗?它们是否存在于db中?是的,用户/密码存在于django admin数据库中。当您收到请求时,POST.get('password','')的值是多少?这是一个清晰的密码还是散列的密码?因此,如果您在装模作样后打印它们,那么您的变量username和password将设置为“admin”和“admin123”?您是否尝试在django shell中使用硬记录的
auth.authenticate('admin','admin123')值执行auth.authenticate
看看会发生什么?我打赌问题是删除后的
逗号
本地服务器可能没有选择更改,重新启动服务器或导致服务器刷新的其他更改可能已经解决了问题。我删除了逗号,但当我打印
用户
时,它仍然返回
自定义用户模型还是默认用户模型?im使用django admins默认
“user”
请在删除逗号后显示更新的
auth\u视图。
username = request.POST.get('username',''),  # <---
password = request.POST.get('password',''),  # <---