这就是我尝试登录时遇到的错误 我真的不知道我的登录代码中是否缺少什么 请帮我复习一下这个代码 这是我的
views.py
import datetime from django.contrib.auth import authenticate, login, logout from django.shortcuts import render from django.http import HttpResponse, HttpResponseRedirect from student_management_app.EmailBackEnd import EmailBackEnd # Create your views here. def showDemoPage(request): return render(request, "demo.html") def ShowLoginPage(request): return render(request, "login_page.html") def doLogin(request): if request.method!="POST": return HttpResponse("<h2>Method Not Allowed</h2>") else: user=EmailBackEnd.authenticate(request,username=request.POST.get("email"),password=request.POST.get("password")) if user!=None: login(request,user) return HttpResponse("Email : "+request.POST.get("email")+ "password
:"+request.POST.get("password")) else: return HttpResponse("Invalid Login")
def GetUserDetails(request): if request.user!=None: return HttpResponse("User :"+request.user.email+" usertype : "+request.user.user_type) else: return HttpResponse("Please Login First") def logout_user(request): logout(request) return HttpResponseRedirect("/")
EmailBackEnd.py
from django.contrib.auth import get_user_model
from django.contrib.auth.backends import ModelBackend
class EmailBackEnd(ModelBackend):
def authentication(self,request username=None, password=None, **kwargs):
UserModel=get_user_model()
try:
user=UserModel.objects.get(email=username)
except UserModel.DoesNotExist:
return None
else:
if user.check_password(password):
return user
return None
URL.py代码
from django.contrib import admin
from django.urls import path
from django.conf.urls.static import static
from student_management_app import views
from student_management_system import settings
urlpatterns = [
path('demo', views.showDemoPage),
path('admin/', admin.site.urls),
path('', views.ShowLoginPage),
path('get_user_details', views.GetUserDetails),
path('logout_user', views.logout_user),
path('doLogin', views.doLogin)
]+static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)+static(settings.STATIC_URL,document_root=settings.STATIC_ROOT)
问题在于电子邮件后端身份验证代码。如果你注意到
请求后缺少一个逗号,应该是
还应避免直接调用身份验证后端。您应该导入默认的auth后端,并将自定义设置添加到
并在设置中添加自定义后端,如
这确保django遍历所有后端并使用一个适合您的用例的后端
request
作为第一个参数传递。您的第一个参数是self
相关问题 更多 >
编程相关推荐