一、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'})