Menu
CoddyTech

Saindo da conta

Parte da seção Usuários e contas do Journey de Django da Coddy. Lição 3 de 16.

Um usuário conectado não tem como sair da conta. O mesmo include() adicionou /accounts/logout/, chamado logout: ele encerra a sessão, então o cookie deixa de apontar para um usuário.

Um link simples não serve. Um link envia uma solicitação GET, e uma solicitação GET nunca deve alterar nada: uma página poderia ocultar uma imagem cujo endereço é a sua URL de logout e desconectar você. Por isso, LogoutView aceita apenas POST e responde a uma solicitação GET com 405 Method not allowed.

Um botão que altera algo é um pequeno formulário POST, mesmo sem campos. Seu action especifica a URL para a qual ele envia a solicitação, então pode ficar em qualquer página:

<form method="post" action="{% url 'cart:empty' %}">
    {% csrf_token %}
    <button type="submit">Empty cart</button>
</form>

Depois de sair da conta, o Django redireciona para LOGOUT_REDIRECT_URL.

challenge icon

Desafio

Fácil
  • Em base.html, abaixo de Signed in as ..., um botão Log out desconecta o usuário.
  • Após sair, o visitante é direcionado para /.

Pressione Run, faça login como ada (senha coddy-pass-123) e, em seguida, pressione Log out.

Experimente você mesmo

{% 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>
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Usuários e contas

Pratique por conta própria: Playground de Django