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/, nazwane logout: kończy ono sesję, więc plik cookie nie wskazuje już użytkownika.
Zwykły odnośnik nie wystarczy. Odnośnik wysyła żądanie GET, a żądanie GET nigdy nie powinno niczego zmieniać: strona mogłaby ukryć obraz, którego adres to URL wylogowania, i wylogować Cię. Dlatego LogoutView akceptuje tylko POST, a żądanie GET skutkuje błędem 405 Method not allowed.
Przycisk, który coś zmienia, to niewielki formularz POST, nawet bez pól. Jego action wskazuje URL, na który 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. Ta wartość nie ma domyślnego ustawienia: jeśli jej nie podasz, zobaczysz stronę wylogowania panelu administracyjnego. Ustaw ją na "/" w pliku settings.py.
Wyzwanie
ŁatwyDodaj przycisk Log out.
- W pliku
base.html, pod tekstemSigned in as, dodaj formularz wysyłany metodą POST do{% url 'logout' %}, zawierający{% csrf_token %}i przyciskLog out. - W pliku
settings.pyustawLOGOUT_REDIRECT_URLna"/".
Zaloguj się jako ada (hasło: coddy-pass-123) i naciśnij przycisk „Wyloguj się”: w nagłówku pojawi się tekst You are not signed in.
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>
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