🚪 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️⃣ 실행 확인 방법
- 서버 실행 후 로그인
- 상단에 로그아웃 버튼 확인
- 클릭 시 POST 요청으로 로그아웃 처리
- 메인 블로그 목록 페이지(/)로 이동
📌 터미널 로그에도 POST /accounts/logout/ 기록 확인 가능
✅ 요약 정리
항목 설명
구현 위치 | blog_list.html 템플릿 |
조건 처리 | request.user.is_authenticated 사용 |
요청 방식 | POST, CSRF 토큰 필수 |
리다이렉트 설정 | LOGOUT_REDIRECT_URL = '/' |
💬 로그아웃 기능은 단순해 보여도 보안적으로 매우 중요합니다. Django의 인증 시스템을 통해 안전하게 처리하세요!
'Django' 카테고리의 다른 글
Chapter 3-7 Django 회원가입(SignUp) 및 로그인(Login) 페이지 만들기 (0) | 2025.05.06 |
---|---|
Chapter 3-6 Django 회원가입(SignUp) 페이지 만들기 (0) | 2025.05.06 |
Chapter 3-5 Django 로그인 페이지 만들기 (0) | 2025.05.06 |
Chapter 3-4 Django에서의 쿠키와 세션 이해 및 실습 (0) | 2025.05.06 |
Chapter 3-3 Django 블로그 상세 페이지 만들기 (0) | 2025.05.06 |