【Django】Webページをログイン必須にする方法【2パターン】

アイキャッチ画像
  • Webページをログイン必須にするには?
  • Webページのログイン必須方法にはどんなパターンがある?

本記事ではこのような疑問を解決します。


Webページにログイン機能をつけた場合、アクセスするのにログイン必須の制限を設ける必要があります。

例えば、詳細ページは会員限定の人しか見れないようにする、など。


したがって、今回はWebページをログイン必須にする方法を解説していきます。

Webページをログイン必須にする方法は2パターンある

Webページをログイン必須にする方法には、クラスベースビューによる方法とファンクションベースビューによる方法の2つがあります。


クラスベースビューによる方法はDjangoで用意されている汎用ビューを使う方法です。

一方、ファンクションベースビューによる方法は関数を記述してデコレーターをつける方法です。


なお、ログイン必須にする方法のどちらにおいても、操作するのはviews.pyのみになります。

クラスベースビューによる方法

クラスベースビューによる方法ではLoginRequiredMixinクラスを使います。

LoginRequiredMixinクラスは、ログインしていないユーザーがアクセスした場合に、
ログインページへリダイレクトする or 403のエラー表示をする処理を行います。

具体的な記述は以下の通りです。

from django.views.generic import TemplateView 
from django.contrib.auth.mixins import LoginRequiredMixin

class View(LoginRequiredMixin, TemplateView):#LoginRequiredMixinを先に記述する→ログイン必須が機能しないことがあるため
    template_name = 'index.html'
    login_url = '/login/'#ログインしていないユーザーのリダイレクト先ログインページ

このようにログイン必須にしたいビューに対してLoginRequiredMixinクラスを継承するだけです。

ファンクションベースビューによる方法

ファンクションベースビューによる方法ではlogin_requiredデコレーターを使います。

login_requiredデコレーターは、ログインしていないユーザーがアクセスした場合に、ログインページへリダイレクトする処理を行います。

具体的な記述は以下の通りです。

from django.contrib.auth.decorators import login_required

@login_required#ログイン必須にしたい関数の前に記述する
def View(request):
    〜処理〜

このようにログイン必須にしたいビューに対してlogin_requiredデコレーターをつけます。

なお、ログインしていないユーザーのリダイレクト先URLについては、settings.pyのLOGIN_URLで指定します。

まとめ

以上Webページをログイン必須にする方法にはクラスベースビューによる方法とファンクションベースビューによる方法の2つがあることがわかりました。

クラスベースビューによる方法ではLoginRequiredMixinクラスを使い、ファンクションベースビューによる方法ではlogin_requiredデコレーターを使います。


どちらもコードの記述量が少なく、仕組みも単純なため、簡単に実装することができます!

関連記事

Djangoが学べるプログラミングスクールとは?おすすめのDjangoスクールとは? 本記事ではこのような疑問を解決します。DjangoはPythonで作られた中で1番メジャーなWebフレームワークです。みんなが普段利用するYouT[…]

アイキャッチ画像