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/, com o nome logout: ele encerra a sessão, então o cookie deixa de apontar para um usuário.
Um link comum não resolve. Um link envia uma requisição GET, e uma requisição GET nunca deve alterar nada: uma página poderia ocultar uma imagem cujo endereço é sua URL de logout e desconectar você. Por isso, LogoutView aceita apenas POST, e uma requisição GET recebe 405 Método não permitido.
Um botão que altera algo é um pequeno formulário POST, mesmo sem campos. Seu action indica a URL para a qual ele envia os dados, então ele pode estar em qualquer página:
<form method="post" action="{% url 'cart:empty' %}">
{% csrf_token %}
<button type="submit">Empty cart</button>
</form>Após sair da conta, o Django redireciona para LOGOUT_REDIRECT_URL. Não há um valor padrão: sem essa configuração, você verá a página de saída do admin. Defina o valor como "/" em settings.py.
Desafio
FácilAdicione um botão Log out.
- Em
base.html, abaixo deSigned in as, adicione um formulário que envie uma solicitação para{% url 'logout' %}com{% csrf_token %}e um botãoLog out. - Em
settings.py, definaLOGOUT_REDIRECT_URLcomo"/".
Entre como ada (senha coddy-pass-123) e pressione Sair: o cabeçalho diz You are not signed in.
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>
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
1Quem está visitando
Quem está visitandoFazendo loginPratique por conta própria: Playground de Django