一、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'})
不妥协,直到变老!