Django

Chapter 3-5 Django 로그아웃 기능 만들기

Chansman 2025. 5. 6. 18:27

🚪 Django 로그아웃 기능 만들기

1️⃣ 개요

Django는 로그인/로그아웃을 기본으로 지원하는 django.contrib.auth.urls를 통해 빠르게 인증 기능을 구현할 수 있습니다. 로그아웃은 POST 요청으로 처리되어야 하므로, form 태그를 사용해 안전하게 구현합니다.


2️⃣ 로그아웃 UI 구성 (blog_list.html)

📌 로그인 여부에 따라 조건 분기하여 메뉴 출력:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>블로그</title>
</head>
<body>
    <nav>
        <div style="text-align: right">
            {% if request.user.is_authenticated %}  <!-- 로그인 상태 -->
                <form action="{% url 'logout' %}" method="POST" style="display: inline">
                    {% csrf_token %}
                    <button type="submit">로그아웃</button>
                </form>
                {{ request.user.username }}
            {% else %}  <!-- 비로그인 상태 -->
                <a href="{% url 'login' %}">로그인</a>
            {% endif %}
        </div>
    </nav>

    <h1>블로그 목록</h1>
    <!-- 블로그 리스트 출력부 -->
</body>
</html>

📌 {% url 'logout' %}: Django 내장 로그아웃 URL
📌 method="POST": 보안을 위해 로그아웃은 POST 방식으로 처리
📌 csrf_token: Django 보안 필수 요소


3️⃣ 로그아웃 후 이동 경로 설정 (settings.py)

# settings.py
LOGOUT_REDIRECT_URL = '/'  # 로그아웃 후 리다이렉트 될 경로 (보통 메인 페이지)

→ 로그인 때 설정한 LOGIN_REDIRECT_URL과 유사한 방식


4️⃣ 실행 확인 방법

  1. 서버 실행 후 로그인
  2. 상단에 로그아웃 버튼 확인
  3. 클릭 시 POST 요청으로 로그아웃 처리
  4. 메인 블로그 목록 페이지(/)로 이동

📌 터미널 로그에도 POST /accounts/logout/ 기록 확인 가능


✅ 요약 정리

항목 설명

구현 위치 blog_list.html 템플릿
조건 처리 request.user.is_authenticated 사용
요청 방식 POST, CSRF 토큰 필수
리다이렉트 설정 LOGOUT_REDIRECT_URL = '/'

💬 로그아웃 기능은 단순해 보여도 보안적으로 매우 중요합니다. Django의 인증 시스템을 통해 안전하게 처리하세요!