python - Django Authenticate 也总是返回 None 并带有正确的凭据
问题描述
我正在为我的项目创建登录和注册页面,并使用 Django MySQL 数据库进行登录并创建用户,注册已正确完成,但登录功能对我不起作用。
PS: is_active 设置为 True 但这仍然不起作用
使用所有正确的信息,它显示无。我已经给出了文件和代码的所有必要部分
我尝试了所有方法,但似乎没有任何效果也尝试了 StackOverflow 上列出的一些解决方案,但仍然没有对我有用。
from django.shortcuts import render, redirect
from .models import Description
from django.http import HttpResponse
from django.contrib.auth.models import User
from django.contrib.auth import authenticate, login
# Create your views here.
def index(request):
d = Description.objects.all()
return render(request,'index.html',{'des':d})
def signup(request):
if request.method == 'POST':
first_name = request.POST['first']
last_name = request.POST['last']
user_name = request.POST['user']
email = request.POST['email']
pass1 = request.POST['password1']
pass2 = request.POST['password2']
if pass1 == pass2:
if User.objects.filter(email=email).exists():
print("Email taken")
elif User.objects.filter(username=user_name).exists():
print("Username taken")
else:
user = User.objects.create_user(username = user_name, first_name=first_name,last_name=last_name, password=pass1, email=email)
user.save()
print("User created")
else:
print("Password Not Matching")
return redirect('/')
else:
return render(request,'signup.html')
def login(request):
if request.method == 'POST':
email = request.POST['email']
password = request.POST['password']
print(email,password)
user = authenticate(request, email=email, password=password)
print(user)
if user is not None:
login(request, user)
print("Logged in")
else:
print("not logged in")
return redirect('/')
else:
return HttpResponse("Invalid")
解决方案
Djangoauthenticate
方法允许仅使用用户名进行身份验证。您可以使用用户的电子邮件从用户模型中获取用户的用户名
username = User.objects.get(email=email).username
password = request.POST.get('password')
替换这个user = authenticate(request, email=email, password=password)
有了这个user = authenticate(request, username=username, password=password)
推荐阅读
- c++ - 我需要一个 Person 类型的循环双向链表,但我不断收到错误,我不明白为什么
- testing - 是否可以播放视频并在 UFT 中记录时间戳?
- python - 以特定格式提取 Excel 数据作为 python 文件的输入
- html - 添加文本会将整个 div 向下移动数百像素?
- captcha - 使用 pytesseract 从验证码中提取文本
- azure-devops - 在 Azure 存储帐户中上传 Blob 时出错
- javascript - 返回 If 语句
- postgresql - pq: "$1" Postgres + go 处或附近的语法错误
- android - 什么时候,为什么在android中使用广播接收器JobScheduler和服务请举例说明
- sql - 如何删除每个日期具有重复值的记录