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