Se déconnecter
Fait partie de la section Utilisateurs et comptes du Journey Django de Coddy. Leçon 3 sur 16.
Un utilisateur connecté ne peut pas se déconnecter. Le même include() a ajouté /accounts/logout/, nommé logout : il met fin à la session, donc le cookie ne pointe plus vers un utilisateur.
Un simple lien ne suffit pas. Un lien envoie une requête GET, et une requête GET ne devrait jamais rien modifier : une page pourrait masquer une image dont l’adresse est votre URL de déconnexion et vous déconnecter. C’est pourquoi LogoutView n’accepte que les requêtes POST et répond à une requête GET par 405 Method not allowed.
Un bouton qui modifie quelque chose est un petit formulaire POST, même sans champ. Son action indique l’URL à laquelle il envoie la requête, il peut donc se trouver sur n’importe quelle page :
<form method="post" action="{% url 'cart:empty' %}">
{% csrf_token %}
<button type="submit">Empty cart</button>
</form>Après la déconnexion, Django redirige vers LOGOUT_REDIRECT_URL.
Défi
Facile- Dans
base.html, sousSigned in as ..., un boutonLog outdéconnecte l’utilisateur. - Après la déconnexion, le visiteur arrive sur
/.
Appuyez sur Run, connectez-vous en tant que ada (mot de passe coddy-pass-123), puis appuyez sur Log out.
Essayez vous-même
{% 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>
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Utilisateurs et comptes
1Qui visite le site
Qui visite le siteSe connecterEntraînez-vous par vous-même : Playground Django