Menu
CoddyTech

Wylogowywanie

Część sekcji Użytkownicy i konta ścieżki Django w Coddy. Lekcja 3 z 16.

Zalogowany użytkownik nie ma możliwości wylogowania się. To samo include() dodało /accounts/logout/ o nazwie logout: kończy ono sesję, więc plik cookie nie wskazuje już użytkownika.

Zwykły link nie wystarczy. Link wysyła żądanie GET, a żądanie GET nigdy nie powinno niczego zmieniać: strona mogłaby ukryć obraz, którego adres jest adresem URL wylogowania, i wylogować użytkownika. Dlatego LogoutView akceptuje tylko żądania POST, a na żądanie GET odpowiada kodem 405 Method not allowed.

Przycisk, który coś zmienia, to mały formularz POST, nawet jeśli nie zawiera pól. Atrybut action określa adres URL, na który formularz wysyła żądanie, więc może znajdować się na dowolnej stronie:

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

Po wylogowaniu Django przekierowuje do LOGOUT_REDIRECT_URL.

challenge icon

Wyzwanie

Łatwy
  • W pliku base.html, pod tekstem Signed in as ... przycisk Log out wylogowuje użytkownika.
  • Po wylogowaniu odwiedzający trafia na /.

Naciśnij Run, zaloguj się jako ada (hasło coddy-pass-123), a następnie naciśnij Log out.

Spróbuj swoich sił

{% 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 iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Użytkownicy i konta

Poćwicz samodzielnie: Edytor online Django