djangodjango-authenticationdjango-class-based-views

Problem with Django class-based LogoutView in Django 5.0


I used Django class-based login and logout views by "django.contrib.auth.urls", login feature works correctly, but when logging out via the link "http://127.0.0.1:8000/accounts/logout" it returns an http 405 error page, saying "method not allowed (GET)". I found out this logout feature was available in django 4.0 but in django 5.0 it's removed.

Support for logging out via GET requests in the django.contrib.auth.views.LogoutView and django.contrib.auth.views.logout_then_login() is removed. -djangoproject.com

How can I fix it?

I think I should somehow make it use POST request instead GET request when loging out but don't know how.


Solution

  • The problem was with the request method used, my initial template used GET method:

    {% if user.is_authenticated %} 
    <a href="{% url 'logout' %}">Log In</a>
    

    but by editing the template to this:

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

    it worked.