Djangoでログアウトの機能も入れたい

2024年6月23日

ログアウトの機能を実装するには、Djangoのビュー django.contrib.auth.views.LogoutView を使用するのが一般的です。以下は、ログインページにログアウトへのリンクを追加し、ログアウトビューを使用する例です:

  1. urls.py にログアウト用のURLを追加します。
python
# urls.py

from django.contrib.auth.views import LogoutView

urlpatterns = [
    # 他のURLパターン
    path('logout/', LogoutView.as_view(), name='logout'),
    # 他のURLパターン
]
  1. ログインページのテンプレートで、ログアウトへのリンクを追加します。
html
{% extends "tools/base.html" %}
{% load static %}
{% block title %}ログイン{% endblock %}

{% block content %}
<h2>ログイン</h2>

<form method="post" class="needs-validation" novalidate>
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit" class="btn btn-primary">ログイン</button>
</form>
<p style="margin-top: 20px; color: red;"><b>※権限により機能は制限されます。詳しくは<a href="{% url 'tools:post_chatwork' %}">チャット</a>でお問い合わせ下さい。</b></p>

{% if user.is_authenticated %}
    <!-- ログインしている場合にユーザー名を表示 -->
    <p style="margin-top: 20px;">ようこそ、{{ user.username }}さん。</p>
    <!-- ログアウトへのリンク -->
    <p><a href="{% url 'logout' %}">ログアウト</a></p>
{% else %}
    <!-- ログインしていない場合にサインアップへのリンクを表示 -->
    <p style="margin-top: 20px;">アカウントをお持ちでない場合は、<a href="{% url 'tools:signup' %}">こちら</a>からサインアップしてください。</p>
{% endif %}
{% endblock %}

上記の例では、{% if user.is_authenticated %}でログインしている場合にログアウトへのリンクを表示しています。ログアウトリンクをクリックすると、ユーザーはログアウトされ、ログアウト後に指定したURLにリダイレクトされます。

未分類

Posted by ぼっち