django - 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', {})
解决方案
您的身份验证逻辑错误。因为您提供了查询集来进行身份验证功能。您可以直接提供用户名和密码。有一个基于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
推荐阅读
- mvvm - 如何使用 MVVM 为社区工具包 RadialGauge 制作动画?
- google-apps-script - 从 Google 表格发送提醒电子邮件和日历
- amazon-web-services - 更新 AWS Glue 表中的行/列
- bash - 如何使用 sed 或 grep 和正则表达式 json 提取文本
- javascript - Vue-ChartJS 数据集推送不更新图表
- java - MongoDB & Java:检索按索引排序的记录
- c++17 - 我需要一些帮助才能在 C++17 中获得正确的十进制输出流格式
- javascript - 在新窗口中打开组件,无需引导
- javascript - 尝试将 selenium 用于动态类自动化
- logging - Perforce 同步时间戳持续时间