【Django】ログアウト機能の実装方法【LogoutView】

アイキャッチ画像
  • 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)にてログアウトボタンをクリックする。
↓↓↓

LogoutView画面①

ログアウトに成功すると、ログアウトページ(logout.html)が表示される。
↓↓↓

LogoutView画面②

以上、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[…]

アイキャッチ画像