Django.contrib.auth.logout в Django
Я хотел бы использовать функцию выхода из Django, но не знаю, как правильно ее использовать. Я ссылаюсь на эту аутентификацию пользователя Django: https://docs.djangoproject.com/en/dev/topics/auth/ и он читает
from django.contrib.auth import logout
def logout_view(request):
logout(request)
# Redirect to a success page.
Сложная часть для меня - это # Перенаправление на страницу успеха. Как перенаправить его на другую страницу. Должен ли я использовать HttpResponseRedirect или добавлять дополнительные аргументы для выхода (запроса). Я не уверен, что делать. Нужно руководствоваться.
Ответы
Ответ 1
Посмотрите на источник метода выхода из системы, он должен дать вам четкое представление о том, что происходит. Вы можете добавить дополнительные аргументы к методу выхода для обработки перенаправления, но вы также можете добавить после метода для пользовательского поведения
def logout(request, next_page=None,
template_name='registration/logged_out.html',
redirect_field_name=REDIRECT_FIELD_NAME,
current_app=None, extra_context=None):
"""
Logs out the user and displays 'You are logged out' message.
"""
auth_logout(request)
redirect_to = request.REQUEST.get(redirect_field_name, '')
if redirect_to:
netloc = urlparse.urlparse(redirect_to)[1]
# Security check -- don't allow redirection to a different host.
if not (netloc and netloc != request.get_host()):
return HttpResponseRedirect(redirect_to)
#etc...
Ответ 2
Вам не нужно писать представление для этого, вы можете просто сделать:
(r'^accounts/logout/$', 'django.contrib.auth.views.logout',{'next_page': '/accounts/login'})
Дополнительная информация: https://docs.djangoproject.com/en/dev/topics/auth/default/#django.contrib.auth.views.logout
Ответ 3
Django имеет метод быстрого вызова под названием redirect
. Вы можете использовать это для перенаправления следующим образом:
from django.contrib.auth import logout
from django.shortcuts import redirect
def logout_view(request):
logout(request)
return redirect('home')
Где home
- это имя шаблона url, определенного вами в urls.py
следующим образом:
urlpatterns = patterns('',
url(r'^$', 'blah.views.index', name='home'))
)
В вызове redirect
вы также можете использовать путь, например /
для перенаправления на корень сайта, но использование именованных видов намного чище.
PS: код, отправленный @Hedde, из модуля django.contrib.auth.views
, logout
. Если это то, что вы хотите использовать, вы можете импортировать его следующим образом:
from django.contrib.auth.views import logout
Ответ 4
def logout(request):<br>
# Log out the user.<br>
logout(request)<br>
# Return to homepage.<br>
return HttpResponseRedirect(reverse('registeration:index'))