Djangoクラスベースビューにログイン制限をかけ、リダイレクトも行う
クラスベースビューは、mixin.pyで別にデコレーター的なクラスをまとめておくと便利
mixin.pyで別にクラスを整理しておき、views.pyにインポートさせるのが可読性を高められるのでオススメ。
""" views.py """ from .mixin import * class MyhogeListView(LoginRequiredMixin, ListView):
ログイン制限をかけるだけで404エラーを返すmixin
ログイン制限をかけるだけで404エラーを返すmixinはこんな感じ。
""" mixin.py """ from django.contrib.auth.decorators import login_required from django.utils.decorators import method_decorator class LoginRequiredMixin(object): @method_decorator(login_required) def dispatch(self, request, *args, **kwargs): return super(LoginRequiredMixin, self).dispatch(request, *args, **kwargs)
mixinでログイン制限をかけてリダイレクトも設定するには
関数ベースのlogin_requiredのリダイレクト設定のときと同じ。で一文追加するだけ。便利。
""" mixin.py """ from django.contrib.auth.decorators import login_required from django.utils.decorators import method_decorator class LoginRequiredMixin(object): @method_decorator(login_required(login_url = '/accounts/login/')) #ここがかわった def dispatch(self, request, *args, **kwargs): return super(LoginRequiredMixin, self).dispatch(request, *args, **kwargs)
以上