我是Django的新手。我陷入一件事,我的登录身份验证方法返回None。我已经尽力搜索并尝试解决此问题,但是我没有找到解决问题的方法。在出现错误的第一个代码示例,
`def loginAdmin(request):
if request.method == "POST":
username = request.POST['username'],
password = request.POST['password'],
user = auth.authenticate(username = username, password = password)
if user is not None:
auth.login(request, user)
return redirect('/admin-dashboard')
else:
messages.info(request, 'invalid')
else:
return HttpResponse('No')
# return render(request,'login.html') `
我正在获取表单的值并在authenticate方法中使用变量,但它给了我这个错误。但是在成功执行第二个代码示例之后`def loginAdmin(request):
if request.method == "POST":
username = request.POST['username'],
password = request.POST['password'],
user = auth.authenticate(username = 'user1', password = 'pass123')
if user is not None:
auth.login(request, user)
return redirect('/admin-dashboard')
else:
messages.info(request, 'invalid')
else:
return HttpResponse('No')
# return render(request,'login.html')
`,如果我在我知道保存在数据库用户名和密码中的身份验证方法中使用了硬编码的值,则它将成功执行。我已调试表单用户名和密码。我试图阐明我的问题。请指导我如何解决此问题。谢谢。Screen Shot 1 Link: Having error in ThisScreen Shot 2 Link: But No error if Hard Coded Value
请从用户名和密码中删除结尾的逗号。
username = request.POST['username']
password = request.POST['password']
[当使用这样的逗号:Python中的elem = 2,
时,将其设为元组(2,)
,而不是代码中的authenticate函数所需的字符串。
def loginAdmin(request):
if request.method == "POST":
username = request.POST['username']
password = request.POST['password']
user = auth.authenticate(username = username, password = password)
if user is not None:
auth.login(request, user)
return redirect('/admin-dashboard')
else:
messages.info(request, 'invalid')
return redirect('/login')
else:
return HttpResponse('No')
或者您可以这样写:
from django.contrib.auth import authenticate, login
from django.http import HttpResponse, HttpResponseRedirect
def loginAdmin(request):
if request.method == 'POST':
username = request.POST.get('username', None)
password = request.POST.get('password', None)
user = authenticate(username=username, password=password)
if user is not None:
login(request, user)
messages.success(request, 'Welcome Back')
return HttpResponseRedirect(reverse('admin-dashboard'))
else:
messages.warning(request, 'Invalid Credentials')
return HttpResponseRedirect(reverse('login'))
else:
if request.user.is_authenticated:
return HttpResponseRedirect(reverse('admin-dashboard'))
return render(request, 'dashboard/login.html')