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.
Görev
KolayBir Log out düğmesi ekle.
base.htmldosyasında,Signed in asifadesinin altına,{% url 'logout' %}adresine POST isteği gönderen,{% csrf_token %}içeren veLog outdüğmesi bulunan bir form ekle.settings.pydosyasındaLOGOUT_REDIRECT_URLdeğ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>
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