Menu
CoddyTech

Oturumu Kapatma

Coddy'nin Django Journey'sinin Kullanıcılar ve Hesaplar bölümünün bir parçası. Ders 3 / 16.

Oturum açmış bir kullanıcının oturumu kapatmasının bir yolu yoktur. Eklenen aynı include(), /accounts/logout/ adresini logout adıyla ekledi: oturumu sonlandırır, böylece çerez artık bir kullanıcıya işaret etmez.

Sıradan bir bağlantı işe yaramaz. Bir bağlantı GET isteği gönderir ve GET hiçbir şeyi değiştirmemelidir: bir sayfa, adresi oturumu kapatma URL’niz olan bir resmi gizleyerek oturumunuzu kapatabilir. Bu nedenle LogoutView yalnızca POST isteklerini kabul eder ve GET isteğine 405 Method not allowed yanıtını verir.

Bir şeyi değiştiren düğme, alanı olmasa bile küçük bir POST formudur. action, isteğin gönderileceği URL’yi belirtir; bu nedenle herhangi bir sayfada yer alabilir:

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

Oturumu kapattıktan sonra Django, LOGOUT_REDIRECT_URL adresine yönlendirir.

challenge icon

Görev

Kolay
  • base.html dosyasında, Signed in as ... ifadesinin altında bulunan Log out düğmesi kullanıcının oturumunu kapatır.
  • Oturum kapatıldıktan sonra ziyaretçi / adresine yönlendirilir.

Çalıştır düğmesine basın, ada olarak oturum açın (parola: coddy-pass-123), ardından oturumu kapatın.

Kendin dene

{% 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 iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Kullanıcılar ve Hesaplar bölümündeki tüm dersler

Kendi başına pratik yap: Django playground