- Djangoでログアウト機能を実装するには?
- LogoutViewの使い方とは?
本記事ではこのような疑問を解決します。
Django開発に限らずログアウト機能はWebアプリケーションにおいて頻繁に実装される機能です。
そんなログアウト機能をDjangoでも簡単に実装したいですよね。
そこで今回はDjangoにおけるログアウト機能の実装方法を解説していきます。
LogoutViewを使ってログイン機能を実装する
本記事ではLogoutViewを使ってログイン機能を実装していきます。
LogoutViewとはログアウト機能を簡単に実装するための汎用ビューのことです。
汎用ビューとはDjango側であらかじめ用意されている、クラスベースで作られた”キット”のようなものです。
なお、ログアウト機能の実装としては関数ベースで処理を記述する方法もありますが、
今回はLoginViewに続いてLogoutViewを扱います。
ログアウト機能の実装手順
最初にログアウト機能の実装手順の全体像を確認しましょう。
①URLの設定をする
②クラスベースビューで処理を記述する
③テンプレートを作成する
なお、今回はこちらの記事で実装したログイン機能のコードに付け加える形で解説していきます。
Djangoでログイン機能を実装するには?LoginViewの使い方とは? 本記事ではこのような疑問を解決します。Django開発に限らずログイン機能はWebアプリケーションにおいて頻繁に実装される機能です。そんなログイン機能をDj[…]
それでは次から具体的な手順を見ていきましょう。
①URLの設定をする
まずはurls.pyにてURLの設定を行います。
ここではurls.pyに以下のような記述をします。
from django.urls import path
from .views import HomeView ,Login
urlpatterns = [
path('', HomeView.as_view(), name="home"),#トップページへのパス(ログイン機能実装の解説記事で既出)
path('login/', Login.as_view(), name="login"),#ログインページへのパス(ログイン機能実装の解説記事で既出)
path('logout/', Logout.as_view(), name="logout"),#ログアウトページへのパス
]
②クラスベースビューで処理を記述する
次にviews.pyにてクラスベースビューで処理を記述していきます。
ここではviews.pyに以下のような記述をします。
from django.shortcuts import render
from django.views.generic import TemplateView
from django.contrib.auth.views import LoginView, LogoutView
from .forms import LoginForm
from django.contrib.auth.mixins import LoginRequiredMixin
#トップページを表示する処理(ログイン機能実装の解説記事で既出)
class HomeView(LoginRequiredMixin, TemplateView):#「LoginRequiredMixin → TemplateView」この順番で記述しないとログイン必須機能が表れないので注意!!
template_name = 'home.html'
login_url = '/login/'
#ログイン機能の処理(ログイン機能実装の解説記事で既出)
class Login(LoginView):
template_name = 'login.html'
form_class = LoginForm
#ログアウト機能の処理
class Logout(LogoutView):
template_name = 'logout.html'
template_nameにはログアウトした後に表示するHTMLファイルを指定します。
③テンプレートを作成する
最後に、ログアウトした後に表示するページを作成し、他のページにログアウトボタンを付けていきましょう。
まずログアウトページ(logout.html)を以下のように記述します。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>ユーザーフォーム</title>
</head>
<body>
<h1>ログアウトしました。</h1>
<p><a href="{% url 'home' %}">ホームへ戻る</a></p>
</body>
</html>
次にトップページ(home.html)にログアウトボタンを付けます。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>ユーザーフォーム</title>
</head>
<body>
<h1>トップページ</h1>
<p><a href="{% url 'logout' %}">ログアウト</a></p>
</body>
</html>
最後にサーバーを起動して画面を確認してみよう!
これまでのステップが完了したら、runserverコマンドでサーバーを起動して画面を確認してみましょう。
※今回はCSSやJavaScriptでの装飾は考慮外のため、白黒テキストのみ
ログインページ(login.html)にてログイン後、トップページ(home.html)にてログアウトボタンをクリックする。
↓↓↓
ログアウトに成功すると、ログアウトページ(logout.html)が表示される。
↓↓↓
以上、LogoutViewを使って簡単にログアウト機能を実装することができました。
なお、他の汎用ビューの使い方については下の記事を参考にしてみてください。
ListViewの使い方はこちら↓
DjangoにあるListViewの使い方とは?データの一覧ページを作るには? 本記事ではこのような疑問を解決します。Djangoではビュー(views.py)を記述する際に、「汎用ビュー」と呼ばれるものがあらかじめ用意されています[…]
CreateViewの使い方はこちら↓
DjangoにあるCreateViewの使い方とは?投稿画面のページを作るには? 本記事ではこのような疑問を解決します。Djangoではビュー(views.py)を記述する際に、「汎用ビュー」と呼ばれるものがあらかじめ用意されていま[…]
DetailViewの使い方はこちら↓
DjangoにあるDetailViewの使い方とは?詳細ページを作るには? 本記事ではこのような疑問を解決します。Djangoではビュー(views.py)を記述する際に、「汎用ビュー」と呼ばれるものがあらかじめ用意されています。汎[…]
LoginViewの使い方はこちら↓
Djangoでログイン機能を実装するには?LoginViewの使い方とは? 本記事ではこのような疑問を解決します。Django開発に限らずログイン機能はWebアプリケーションにおいて頻繁に実装される機能です。そんなログイン機能をDj[…]
Djangoが学べるプログラミングスクールとは?おすすめのDjangoスクールとは? 本記事ではこのような疑問を解決します。DjangoはPythonで作られた中で1番メジャーなWebフレームワークです。みんなが普段利用するYouT[…]