Django logout view показывает пустую страницу и не выводит пользователя из системы
Я столкнулся с проблемой, связанной с моим представлением выхода из системы. Я создал пользовательский CBV, который наследует от стандартного Django LogoutView. Интересным фактом является то, что он прекрасно работает с FBV. Когда я связываю URL /logout/ с CBV, появляется только пустая страница и не происходит выхода из системы подписанного пользователя. Я также создал шаблон, который визуализируется без каких-либо проблем с FBV. Здесь вы можете увидеть мои представления:
from django.shortcuts import redirect, render
from django.contrib.auth import views as auth_views, get_user_model, logout
from django.urls import reverse_lazy
from django.views import generic as views
from accounts.forms import MyUserCreationForm
UserModel = get_user_model()
# Create your views here.
class MyUserRegisterView(views.CreateView):
template_name = "user-register.html"
form_class = MyUserCreationForm
success_url = reverse_lazy("home page")
class MyUserLoginView(auth_views.LoginView):
template_name = "user-login.html"
class MyUserLogoutView(auth_views.LogoutView):
template_name = "user-logout.html"
def logout_view(request):
if request.method == "POST":
logout(request)
return redirect("home page")
return render(request, "user-logout.html")
Вот мои урлы:
from django.urls import path
from accounts import views
urlpatterns = (
path("register/", views.MyUserRegisterView.as_view(), name="register"),
path("login/", views.MyUserLoginView.as_view(), name="login"),
path("logout/", views.MyUserLogoutView.as_view(), name="logout"),
)
Я также определил
LOGOUT_REDIRECT_URL = reverse_lazy("home page")
в settings.py
Здесь также представлен мой шаблон, который прекрасно работает с FBV и выполняет свою работу:
{% if request.user.is_authenticated %}
<h1>Are you sure you want to logout, {{ request.user }}?</h1>
<form action="{% url 'logout' %}" method="post">
{% csrf_token %}
<button>Logout</button>
</form>
{% else %}
<h1>No user logged in</h1>
{% endif %}
URL-адрес для выхода из системы следующий: http://127.0.0.1:8000/accounts/logout/
Заранее благодарю вас, добрые люди!