Django2.2版本的登录认证自定义扩展类的使用

说明:这里只讲自定义扩展类的方式去使用登录认证方法,除了该方式外还有其他方式去使用,这里不详细拿出来讨论了,有兴趣的同学可以上官网查资料哈
  • 使用自定义扩展类的好处 :
    1.复用性好
    2.代码简洁
    
  • 使用步骤:
    • 1.先在xx.py文件中自定义类并继承系统自带的View和LoginRequiredMinxin模块(例:LoginRequired.py)

      from django.contrib.auth.mixins import LoginRequiredMixin
      from django.views import View
      
      #自定义登录认证扩展类并继承View和LoginRequiredMinxin模块
      MyLoginRequiredMixin(LoginRequiredMixin, View):
      		login_url = '/login/'		#这个是登录认证失败后返回的url路由匹配路径
      		redirect_field_name = 'redirect_to'      	#这个是登录认证成功后的路径,登录成功后跳转的路由
      
    • 2.这样就可以在你业务任意模块类中直接继承自定义扩展类就可以实现登录验证的功能了(例:views.py)

      		#用户展示模块,需要用户登陆后才能展示,没有登录的用户需要进行登录操作
      		
      		class UserCenterInfoView(MyLoginRequiredMixin,View):
      								#继承自定义登录认证扩展类
      								def get(self,request):
      									"""
      									用户中心的页面展示
      									 :param request: 前端请求
      									 :return: 返回用户中心的展示页面
      									"""
      									#获取请求url中是否带有查询字符串参数redirect_to,如果有则说明是登录认证失败的用户访问
      									redirect_to=request.GET.get('redirect_to')
      							        if redirect_to:
      							       	 #如果认证成功,则返回登录认证前的页面
      							            return redirect(redirect_to)
      							        else:
      							            #  然后在其他需要登录并重定向到未登录访问的页面上
      							            return render(request,'user_center_info.html')
      									
      

      好了,这样自定义登录认证扩展类就完成了,如果以后哪个业务需要登录认证了之后才能展示的功能,就直接继承这个自定义扩展类名就可以了,是不是很方便呢?动手试试吧

你可能感兴趣的:(Django2.2版本的登录认证自定义扩展类的使用)