После нажатия кнопки выхода приложение переводит меня на пустую страницу

После нажатия кнопки выхода приложение переадресует меня на https://it-company-task-manager-uzrc.onrender.com/accounts/login/

Но есть пустая страница, и после выхода из системы я все еще вхожу в систему и могу выполнять действия (создавать задания и т.д.)

Я пытался решить эту проблему разными способами, но ничего не меняется. Вы можете проверить это самостоятельно: https://it-company-task-manager-uzrc.onrender.com

sidebar.html:

<li class="">
           <a href="{% url 'login' %}" class="icon">
              <i class="fa-solid fa-right-from-bracket"></i>
              <span class="ml-4">Log out</span>
            </a>
          </li>

login.html:

{% extends "base.html" %}
{% load static %}

{% block login %}
  <section class="login-content">
   <div class="container">
      <div class="row align-items-center justify-content-center height-self-center">
         <div class="col-lg-8">
            <div class="card auth-card">
               <div class="card-body p-0">
                  <div class="d-flex align-items-center auth-content">
                     <div class="col-lg-6 bg-primary content-left">
                        <div class="p-3">
                           <h2 class="mb-2 text-white">Sign In</h2>
                           <p>Login to stay connected.</p>
                            {% if form.non_field_errors   %}
                              {{ form.non_field_errors   }}
                            {% endif %}
                           <form action="{% url 'login' %}" method="post">
                             {% csrf_token %}
                              <div class="row">
                                 <div class="col-lg-12">
                                    <div class="floating-label form-group">
                                        {% if form.username.errors %}
                                          {{ form.username.errors }}
                                        {% endif %}
                                       <input class="floating-input form-control" type="text"  name="username" placeholder="Username">
                                    </div>
                                 </div>
                                 <div class="col-lg-12">
                                    <div class="floating-label form-group">
                                        {% if form.password.errors %}
                                          {{ form.password.errors }}
                                        {% endif %}
                                       <input class="floating-input form-control" type="password"  name="password" placeholder="Password">
                                    </div>
                                 </div>
                              </div>
                              <input type="hidden" name="next" value="{{next}}" />
                              <button type="submit" class="btn btn-white">Sign In</button>
                           </form>
                        </div>
                     </div>
                     <div class="col-lg-6 content-right">
                        <img src="{% static 'images/login/01.png' %}" class="img-fluid image-right" alt="">
                     </div>
                  </div>
               </div>
            </div>
         </div>
      </div>
   </div>
  </section>
{% endblock %}

настройки:

LOGIN_REDIRECT_URL = "/"
LOGOUT_REDIRECT_URL = "/accounts/login/"

Урлы:

from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
from django.views.generic import RedirectView


urlpatterns = [
    path("admin/", admin.site.urls),
    path("accounts/", include("django.contrib.auth.urls")),
    path("", RedirectView.as_view(url="tasks/", permanent=True)),
    path("tasks/", include("task.urls", namespace="task")),
    path("employees/", include("employee.urls", namespace="employee"))
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

1) Попробуйте это.


path("", RedirectView.as_view(url="/tasks", permanent=True)),

2) И,

<a href="{% url 'login' %}" class="icon">

это неправильно.

Разве это не должно быть

<a href="{% url 'logout' %}" class="icon">

Если вы используете Django 5, возможно, вы столкнулись с той же проблемой, которая рассматривается в этих вопросах:

По сути, вы больше не можете получить доступ к встроенному представлению logout с помощью запроса GET; вы должны сделать это с помощью запроса POST.

Итак, как предлагает willeM_ Van Onsem в первой ссылке выше, вам нужно обернуть вашу кнопку выхода из системы в небольшую форму:

<form method="post" action="{% url 'logout' %}">
    {% csrf_token %}
    <button type="submit">logout</button>
</form>

В моем Django-приложении запрос POST к стандартной конечной точке Django-стандарта '/logout' приведет к выходу пользователя из системы и перенаправлению на шаблон 'logged_out.html', который, возможно, уже есть у вас вместе с остальными шаблонами регистрации (или вы используете тот, который уже поставляется с Django).

Вернуться на верх