Ayyappan Subramaniyan
Ayyappan Subramaniyan

Reputation: 77

Signout is not working in Django

I have tried to call the signout url from template then redirect to home page.

profile.html:

<li><a data-hover="Logout" href="{% url 'signout' %}">Logout</a></li>

urls.py:

urlpatterns = [
    url(r'^$', views.login, name='login'),
    url(r'^ajax/validate_username/$', views.validate_username, name='validate_username'),
    url(r'^signout$', views.signout, name='signout'),
]

views.py:

def signout(request):
    if request.user.is_authenticated():
        logout(request)
        return HttpResponsePermanentRedirect('/')
    else:
        return HttpResponsePermanentRedirect('/')

Sometimes signout functionality is not working, while clicking the logout menu(The function signout is calling).

Upvotes: 2

Views: 1146

Answers (2)

praveen kumar
praveen kumar

Reputation: 108

You can use following code, It will work.

url(r'^signout/$', 'django.contrib.auth.views.logout', {'next_page': '/login/'}, name='signout')

Upvotes: 0

Fomalhaut
Fomalhaut

Reputation: 9745

Probably, you should use HttpResponseRedirect instead of HttpResponsePermanentRedirect. Because permanent redirection could use cache that you don't need if you intend to run signout always.

Also you can do signout like this:

from django.contrib.auth import views as auth_views

urlpatterns = [
    ...
    url(r'^signout/$', auth_views.logout, {'next_page': 'home'}, name='signout'),
    ...
]

Upvotes: 6

Related Questions