3-4. LogoutViewを使用してログアウト機能を実装する

今回のテーマは「LogoutViewを使用してログアウト機能を実装する」です。前回扱ったログイン処理と対となるログアウト処理を扱います。今回もDjangoに組み込まれたLogoutViewを使用することでコーディングの手間をかけずに実装していきます。

※本ページは「LoginViewを使用してログイン画面を作成する」まで読まれた方を対象としています。そのためサンプルソースコードが省略されている場合があります


LogoutViewについて

django.contrib.auth.views.LogoutViewには以下のクラス変数があり、この値を継承クラスでオーバライドしたり、as_viewメソッドで設定することで制御することが出来ます。

  • next_page: ログアウト後のリダイレクト先URL。デフォルトはNone
  • redirect_field_name: POSTやGETでリダイレクト先を指定するときのキー。デフォルトはnext
  • template_name: テンプレート名。デフォルトはregistration/logged_out.html
  • extra_context: 追加コンテキスト。デフォルトはNone

今回はすべてデフォルトの状態で使ってみます。認証機能のカスタマイズは本章の後半で扱うので、それまでお待ち下さい。

ログアウト画面用のテンプレート作成

ではログアウト画面用のテンプレートを作成していきます。django.contrib.auth.views.LogoutViewのデフォルトテンプレートは’registration/logged_out.html’ですので、その名前で作成していきます。

templates/registration/logged_out.html



{% extends 'base/base.html' %}
{% block title %}ITについて切磋琢磨する掲示板 - {{ block.super }}{% endblock %}
{% block content %}
<div class="ui grid stackable">
    <div class="eleven wide column">
        <div class="ui breadcrumb">
            <a href="{% url 'base:top' %}" class="section">TOP</a>
            <i class="right angle icon divider"></i>
            <a class="active section">ログアウト完了</a>
        </div>
        <div class="ui segment">
            <div class="content">
                <div class="header"><h3>ログアウトしました。</h3></div>
                <p><a href="{% url 'base:top' %}">TOPへ戻る</a></p>
            </div>
        </div>
    </div>
    {% include 'base/sidebar.html' %}
</div>
{% endblock %}

URLの確認

LoginViewを使用してログイン画面を作成するの「django.contrib.auth.urlsをインクルードする」は必ず設定しておいて下さい。

前回設定しているのでURLに関しては設定不要ですが、本ページから見た読者のためにmysite.pyを表示しておきます。

mysite/urls.py(一部抜粋)


urlpatterns = [
    path('admin/', admin.site.urls),
    path('accounts/', include('django.contrib.auth.urls')),
    path('accounts/', include('accounts.urls')),
    path('', include('base.urls')),
    path('thread/', include('thread.urls')),
    path('api/', include('api.urls')),
    path('search/', include('search.urls')),
    path('sitemap.xml', sitemap, {'sitemaps': sitemaps}),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

動作確認

では動作を確認してみましょう。
ログインした状態でヘッダーの「ログアウト」を押してログアウト画面に遷移すればOKをです。

ヘッダーのログアウトボタン押下

ログアウト画面に遷移

最後に

さてログイン、ログアウトについては実装出来ましたね。次回はパスワード変更機能を実装していきますよ。

Sponsored Link


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です