概要
クラスベースビュー(class-based view)でログアウト機能を作成したのでまとめた。
ログアウト機能は、Djangoがもともと用意しているLogoutViewクラスを使用する。
LoginViewと同様にviews.pyにビュー処理を記述する必要がなく、手軽にログアウト機能を実装できる。
概要 クラスベースビュー(class-based view)でログイン機能を作成したのでまとめた。 ログイン機能は、Djangoがもともと用意しているLoginViewクラスを使用する。 LoginViewの場合、ListViewのよ[…]
前提
以下の記事の続きになる。
概要 クラスベースビュー(class-based view)で会員登録機能を作成したのでまとめた。 会員登録機能は、Djangoがもともと用意しているCreateViewクラスを継承して作成する。 CreateViewをどのように[…]
ログアウト機能処理イメージ
処理内容
ログインしたユーザーのみ利用できるタスク一覧画面に【ログアウト】ボタンを用意する。
【ログアウト】ボタンを押下すると、ログインしている状態を解除する。
内部処理としてはログインした状態だとDjangoはセッション情報を持っているが、LogoutViewの中でセッション情報を削除している。
画面
ログアウト機能の実装
サーバー
accounts/urls.py
from django.urls import path
from . import views
from django.contrib.auth.views import LoginView, LogoutView
urlpatterns = [
path("login/", LoginView.as_view(), name="login"),
path("signup/", views.SignupView.as_view(), name="signup"),
path("logout/", LogoutView.as_view(), name="logout"),
]
ログアウトURLにLogoutViewの処理を紐づける。
settings.py
(略)
LOGOUT_REDIRECT_URL = "login"
ログアウトした際の遷移先を定義する。
上記はaccounts/urls.pyに定義されているloginビューを指定している。
画面側
todoapps/templates/todo/top.html
(略)
<div class="container mt-5">
<h2 class="text-center">タスク一覧</h2>
<a href="{% url 'logout' %}" id="logout" class="btn btn-primary mb-3 mx-3">ログアウト</a>
(略)
タスク一覧画面にログアウトボタンを用意する。
ログアウトURLへは以下のようにGETリクエストを送っている。
href="{% url 'ビューの名前' %}"
ビューの名前はログアウト処理を指定している。
以上でログアウト処理を実装できる。