Django 登录检查-自动重定向到登录页

编写一个Mixin类

from django.contrib.auth.decorators import login_required
from django.utils.decorators import method_decorator


class LoginRequiredMixin(object):
    """
    登录验证:如果未登录,自动重定向到登录页面
    """

    @method_decorator(login_required(login_url='/myuser/login/'))       # 类方法装饰器,传入login_required装饰器
    def dispatch(self, request, *args, **kwargs):                       # 必须重写分发方法dispatch,自动识别分发给get或post方法
        return super(LoginRequiredMixin, self).dispatch(request, *args, **kwargs)

类视图继承之

class UserCenInfoView(LoginRequiredMixin, View):         # 注意继承顺序
    def get(self, request):
        ...
    def post(self, request):
        ...

 

关于Mixin类

Mixin:在设计类的继承关系时,通常,主线都是单一继承下来的,如果需要"组合"额外的功能,通过多重继承就可以实现,这种设计通常称之为Mixin(混合)。
Mixin类一般以Mixin为后缀,使用Mixin类实现多重继承需要注意:
1)首先,它必须表示某一种辅助功能,而不是某个事物;
2)其次,它必须功能单一,如果有多个功能,那就写多个Mixin类;
3)再者,它不依赖于子类的实现;
4)最后,子类即便没有继承这个Mixin类,也照样可以工作,就是缺少了某个功能(比如飞机照样可以载客,就是不能飞了^_^)。

  至此。转载请注明出处。

猜你喜欢

转载自www.cnblogs.com/wcwnina/p/9248162.html