一、utils
1. 單獨創建一個 utils 包, 在包內創建 mixin.py 文件

二、mixin.py
1. 編寫一個 LoginRequiredMixin 繼承 object
2. 重寫 as_view(cls, **initkwargs) 類方法, 對父類的 as_view 進行一層的封裝
1 from django.contrib.auth.decorators import login_required 2 3 4 class LoginRequiredMixin(object): 5 @classmethod 6 def as_view(cls, **initkwargs): 7 view = super(LoginRequiredMixin, cls).as_view(**initkwargs) 8 return login_required(view)
三、views.py
1. UserOrderView 視圖類使其繼承 LoginRequiredMixin 類和 View
2. 先從 LoginRequiredMixin 類中調用 as_view() 方法,而后又會在該類中向他的父類 View 中調用 as_view()
1 from django.shortcuts import render 2 from django.views.generic import View 3 from utils.mixin import LoginRequiredMixin 4 5 6 class UserOrderView(LoginRequiredMixin, View): 7 """用戶中心-訂單頁""" 8 def get(self, request): 9 """顯示訂單頁""" 10 return render(request, 'user_center_order.html', {'page': 'order'})
