Reputation: 77
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
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
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