Menu
CoddyTech

התנתקות

חלק מהיחידה משתמשים וחשבונות במסלול ה-Django של Coddy. שיעור 3 מתוך 16.

למשתמש מחובר אין דרך להתנתק. אותה include() הוסיפה את /accounts/logout/, ששמה logout: היא מסיימת את ההפעלה, כך שהעוגייה כבר לא מפנה למשתמש.

קישור רגיל לא יספיק. קישור שולח בקשת GET, ובקשת GET לעולם לא אמורה לשנות דבר: דף יכול להסתיר תמונה שהכתובת שלה היא כתובת ההתנתקות שלך וכך לנתק אותך. לכן LogoutView מקבלת רק בקשות POST, ומשיבה לבקשת GET עם 405 Method not allowed.

כפתור שמשנה משהו הוא טופס POST קטן, גם ללא שדות. המאפיין action מציין את כתובת ה-URL שאליה הטופס שולח את הבקשה, ולכן אפשר למקם אותו בכל דף:

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

לאחר ההתנתקות, Django מפנה אל LOGOUT_REDIRECT_URL.

challenge icon

אתגר

קל
  • ב-base.html, מתחת ל-Signed in as ..., כפתור Log out מנתק את המשתמש.
  • לאחר ההתנתקות, המבקר מגיע אל /.

לחצו על Run, התחברו בתור ada (הסיסמה coddy-pass-123), ואז לחצו על התנתקות.

נסו בעצמכם

{% 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 iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה משתמשים וחשבונות

תרגלו בעצמכם: Django אונליין