2016-12-05 7 views
1

Я попытался вызвать URL-адрес выписки из шаблона, а затем перенаправить на главную страницу.Выйти не работает в Django

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('/') 

Иногда SignOut функциональность не работает, при нажатии на меню выхода из системы (Вызов функции вызывает).

+0

Что «не работает» означает? ваши точки останова в представлении попадают? вы вышли из системы? вы получаете какие-либо ошибки? – Sayse

+0

Он не вышел из строя и никаких ошибок. Та же страница загружается, когда вы нажимаете меню выхода. Выбрав меню, он будет вызывать функцию (выписать) и перенаправить на дом, но функция не вызывает. – Ayan

ответ

6

Возможно, вы должны использовать HttpResponseRedirect вместо HttpResponsePermanentRedirect. Поскольку постоянное перенаправление может использовать кеш, который вам не нужен, если вы намереваетесь запускать signout всегда.

Также вы можете сделать SignOut так:

from django.contrib.auth import views as auth_views 

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

Спасибо, что он работает с адресом localhost: 8000. Но если я использую url '127.0.0.1:8000', вывод не работает, а перенаправляется на ту же страницу woking. Могу ли я узнать причину? – Ayan

+0

Никогда не встречал разницу между 127.0.0.1 и localhost. Вероятно, вы сохранили некоторые URL-адреса в кеше. Очистите кеш и повторите свои запросы. – Fomalhaut

0

Вы можете использовать следующий код, он будет работать.

URL (г '^ SignOut/$', 'django.contrib.auth.views.logout', { 'next_page': '/ Войти /'}, имя = 'SignOut')

Смежные вопросы