之前我们在进行用户校验的时候,总是从数据库中获取数据,然后再进行对比,就像如下这样:
def login(request): if request.method == "POST": user = request.POST.get("user") pwd = request.POST.get("pwd") ret = models.user_info.objects.filter(user=user,pwd=pwd) if ret: request.session["user"] = user return redirect("/index/") return render(request,"login.html")
现在Django提供了一种另一种认证方式,基于auth组件。
from django.contrib import auth def log_in(request): user = request.POST.get("user") pwd = request.POST.get("pwd") #验证成功,返回user对象,否则返回None user = auth.authenticate(username=user,password=pwd) if user: auth.login(request,user) #登录成功之后,在django_session之中会生成一条相应的信息 #下次访问页面的时候就不需要登录了 return redirect("/index/") return render(request,"log_in.html") def index(request): print(request.user) print(type(request.user)) #如果不能能够获取到user这个sessionid,就会跳转 # if not request.user.id: # return redirect("/log_in/") user = request.user if not user.is_authenticated(): return redirect('/log_in/') return render(request,"index.html",locals()) def log_out(request): auth.logout(request) return redirect("/log_in/")