django中有关登陆验证的LoginRequiredMixin类
通常情况判断一个用户是否登陆可以使用 request.user.is_is_authenticate(),就可以完成,返回结果TRUE或者FALSE
class UserCenterInfoView(View): def get(self,request): if request.user.is_authenticated(): return render(request,"用户中心_info.html") else: return render(request,"login.html")
虽然可以判断出来是否登陆,系统很多地方都需要判断是否登陆,不能频繁的增加这类代码,于是,django系统就把这段代码进行封装,封装类就是LoginRequiredMimin
class LoginRequiredMixin(AccessMixin): """Verify that the current user is authenticated.""" def dispatch(self, request, *args, **kwargs): if not request.user.is_authenticated: return self.handle_no_permission() return super().dispatch(request, *args, **kwargs
由于如果没有登陆,返回return self.handle_no_permission(),执行LoginRequiredMixin的父类AccessMixin的方法,因为他没有这个方法;
def handle_no_permission(self): if self.raise_exception or self.request.user.is_authenticated: raise PermissionDenied(self.get_permission_denied_message()) return redirect_to_login(self.request.get_full_path(), self.get_login_url(), self.get_redirect_fie
就会重新跳转到登陆 redirect_tp_login;
如果要使用 LoginRequiredMixin,可以直接继承例如:
class AddressView(LoginRequiredMixin,View): def post(self,request):