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/ yolunu da logout adıyla ekledi: oturumu sonlandırır, böylece çerez artık bir kullanıcıyı göstermez.

Basit bir bağlantı işe yaramaz. Bağlantı bir GET isteği gönderir ve GET hiçbir şeyi asla değiştirmemelidir: bir sayfa, adresi oturum kapatma URL'niz olan bir görseli gizleyip oturumunuzu kapatabilir. Bu nedenle LogoutView yalnızca POST isteğini kabul eder ve GET isteği 405 Method not allowed hatası alır.

Bir şeyi değiştiren düğme, alan içermese bile küçük bir POST formudur. action, formun 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. Varsayılan bir değeri yoktur: bu ayar olmadan yönetim panelinin oturum kapatma sayfasını görürsünüz. settings.py içinde değerini "/" olarak ayarlayın.

challenge icon

Görev

Kolay

Bir Log out düğmesi ekle.

  1. base.html dosyasında, Signed in as ifadesinin altına, {% url 'logout' %} adresine POST isteği gönderen, {% csrf_token %} içeren ve Log out düğmesi bulunan bir form ekle.
  2. settings.py dosyasında LOGOUT_REDIRECT_URL değerini "/" olarak ayarla.

ada olarak oturum aç (parola coddy-pass-123) ve Çıkış yap düğmesine bas: başlıkta You are not signed in. yazar.

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