Disconnessione
Fa parte della sezione Utenti e account del percorso Django di Coddy. Lezione 3 di 16.
Un utente che ha effettuato l'accesso non ha modo di disconnettersi. Lo stesso include() ha aggiunto /accounts/logout/, chiamato logout: termina la sessione, quindi il cookie non punta più a un utente.
Un semplice link non basta. Un link invia una richiesta GET, e una richiesta GET non dovrebbe mai modificare nulla: una pagina potrebbe nascondere un'immagine il cui indirizzo è il tuo URL di disconnessione e disconnetterti. Perciò LogoutView accetta solo richieste POST e risponde a una richiesta GET con 405 Metodo non consentito.
Un pulsante che modifica qualcosa è un piccolo modulo POST, anche senza campi. Il suo action indica l'URL a cui invia la richiesta, quindi può trovarsi su qualsiasi pagina:
<form method="post" action="{% url 'cart:empty' %}">
{% csrf_token %}
<button type="submit">Empty cart</button>
</form>Dopo la disconnessione, Django reindirizza a LOGOUT_REDIRECT_URL.
Sfida
Facile- In
base.html, sottoSigned in as ..., un pulsanteLog outdisconnette l'utente. - Dopo essersi disconnesso, il visitatore viene reindirizzato a
/.
Premi Run, accedi come ada (password coddy-pass-123), quindi premi Log out.
Provalo tu
{% 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>
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Utenti e account
Esercitati da solo: Playground Django