Abmelden
Teil des Abschnitts Benutzer und Konten der Django-Journey von Coddy. Lektion 3 von 16.
Ein angemeldeter Benutzer kann sich nicht abmelden. Dasselbe include() hat /accounts/logout/ hinzugefügt, benannt als logout: Es beendet die Sitzung, sodass das Cookie nicht mehr auf einen Benutzer verweist.
Ein einfacher Link reicht nicht aus. Ein Link sendet eine GET-Anfrage, und eine GET-Anfrage sollte niemals etwas ändern: Eine Seite könnte ein Bild verbergen, dessen Adresse deine Abmelde-URL ist, und dich so abmelden. Deshalb akzeptiert LogoutView nur POST-Anfragen und beantwortet eine GET-Anfrage mit 405 Methode nicht erlaubt.
Eine Schaltfläche, die etwas ändert, ist ein kleines POST-Formular, auch wenn es keine Felder enthält. Sein action gibt die URL an, an die es die Anfrage sendet, sodass es auf jeder Seite stehen kann:
<form method="post" action="{% url 'cart:empty' %}">
{% csrf_token %}
<button type="submit">Empty cart</button>
</form>Nach der Abmeldung leitet Django zu LOGOUT_REDIRECT_URL weiter.
Aufgabe
Einfach- In
base.htmlbefindet sich unterSigned in as ...eine SchaltflächeLog out, mit der der Benutzer abgemeldet wird. - Nach dem Abmelden wird der Besucher zu
/weitergeleitet.
Klicke auf Run, melde dich als ada (Passwort coddy-pass-123) an und klicke dann auf Abmelden.
Probier es selbst
{% 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>
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Benutzer und Konten
Übe selbstständig: Django-Playground