Menu
CoddyTech

Keluar

Termasuk bagian Pengguna dan Akun dalam perjalanan Django di Coddy. Pelajaran 3 dari 16.

Pengguna yang sudah masuk tidak memiliki cara untuk keluar. include() yang sama menambahkan /accounts/logout/, dengan nama logout: ini mengakhiri sesi, sehingga cookie tidak lagi menunjuk ke pengguna.

Tautan biasa tidak akan berhasil. Tautan mengirim GET, dan GET tidak boleh mengubah apa pun: sebuah halaman dapat menyembunyikan gambar yang alamatnya adalah URL logout-mu dan membuatmu keluar. Jadi, LogoutView hanya menerima POST dan membalas GET dengan 405 Method not allowed.

Tombol yang mengubah sesuatu adalah formulir POST kecil, bahkan tanpa kolom. action-nya menentukan URL tujuan pengirimannya, jadi formulir ini dapat ditempatkan di halaman mana pun:

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

Setelah keluar, Django mengalihkan ke LOGOUT_REDIRECT_URL.

challenge icon

Tantangan

Mudah
  • Di base.html, di bawah Signed in as ..., tombol Log out mengeluarkan pengguna dari akun.
  • Setelah keluar dari akun, pengunjung diarahkan ke /.

Tekan Jalankan, masuk sebagai ada (kata sandi coddy-pass-123), lalu tekan Log out.

Coba sendiri

{% 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 iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pengguna dan Akun

Latihan sendiri: Playground Django