Django之登录判断的几种方式


登录判断,Django自带的认证系统

Django认证系统文档:https://yiyibooks.cn/xx/django_182/topics/auth/default.html 

登录判断的几种方式:

  • 1.if user.is_authenticate:...
  • 2.在FBV前添加@login_required
  • 3.如果时用的是CBV,可以在url进行匹配时先使用login_required进行判断。
  • 4.如果时用的是CBV,使用Mixin,自定义一个LoginRequiredMixin,调用父类的as_view,然后返回login_required包装的函数;
  • 5.使用中间件;

 

如果时用的是CBV,可以在url进行匹配时先使用login_required进行判断。

from django.contrib.auth.decorators import login_required

url(r'^order', login_required(UserOrderView.as_view()), name="order"),  # 用户订单页面
url(r'^address', login_required(AddressView.as_view()), name="address"),  # 用户地址页面
url(r'^$', login_required(UserInfoView.as_view()), name="user"),  # 用户订单信息页面

 

 

在项目下新建一个utils文件夹,意思为工具包,在utils中新建mixin.py文件,加入如下代码

from django.contrib.auth.decorators import login_required


class LoginRequiredMixin(object):
    @classmethod
    def as_view(cls, **initkwargs):
        # 调用父类的as_view方法
        view = super(LoginRequiredMixin, cls).as_view(**initkwargs)
        return login_required(view)

然后,在需要进行登录判断的CBV中继承LoginRequiredMixin类,如下:

from utils.mixin import LoginRequiredMixin

class UserOrderView(LoginRequiredMixin, View):
    """用户中心-订单页"""
    def get(self, request):
        """返回用户中心信息页面"""
        return render(request, "user_center_order.html", {"page": "order"})

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM