- 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[…]