로그아웃하기
Coddy Django 여정의 사용자와 계정 섹션에 포함된 레슨. 16개 중 3번째.
로그인한 사용자는 로그아웃할 방법이 없습니다. 같은 include()가 /accounts/logout/를 추가하고 이름을 logout으로 지정했습니다. 이 URL은 세션을 종료하므로 쿠키는 더 이상 사용자를 가리키지 않습니다.
일반 링크로는 충분하지 않습니다. 링크는 GET 요청을 보내며, GET 요청은 어떤 것도 변경해서는 안 됩니다. 페이지에서 주소가 로그아웃 URL인 이미지를 숨겨 사용자를 로그아웃시킬 수도 있기 때문입니다. 따라서 LogoutView는 POST 요청만 허용하고, GET 요청에는 405 메서드 허용되지 않음으로 응답합니다.
무언가를 변경하는 버튼은 필드가 없어도 작은 POST 양식입니다. action에는 요청을 보낼 URL이 지정되므로, 버튼은 어느 페이지에나 둘 수 있습니다.
<form method="post" action="{% url 'cart:empty' %}">
{% csrf_token %}
<button type="submit">Empty cart</button>
</form>로그아웃한 뒤 Django는 LOGOUT_REDIRECT_URL로 리디렉션합니다.
챌린지
쉬움base.html에서Signed in as ...아래의Log out버튼을 누르면 사용자가 로그아웃됩니다.- 로그아웃한 후 방문자는
/로 이동합니다.
Run을 누르고 ada(비밀번호 coddy-pass-123)로 로그인한 다음 Log out을 누르세요.
직접 해보기
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>{% block title %}Notes{% endblock %}</title>
<link rel="stylesheet" href="{% static 'notes/style.css' %}">
</head>
<body>
<header>
<a class="brand" href="{% url 'notes:list' %}">Notes</a>
<nav>
<a href="{% url 'notes:create' %}">New note</a>
</nav>
<div class="account">
{% if user.is_authenticated %}
<p>Signed in as {{ user.username }}</p>
{% else %}
<p>You are not signed in.</p>
<a href="{% url 'login' %}">Log in</a>
{% endif %}
</div>
</header>
<main>
{% block content %}{% endblock %}
</main>
</body>
</html>
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
사용자와 계정의 모든 레슨
직접 연습해 보세요: Django 플레이그라운드