Не удается выйти из системы аутентификации пользователя django - PullRequest
0 голосов
/ 26 октября 2018

Я работаю над проектом, в котором организация войдет в систему, а затем выйдет из системы, если они захотят. Но почему-то функционал выхода из системы не работает. Перенаправление не происходит, и пользователь не может выйти из системы.

# urls.py
urlpatterns = [
    path('logout',views.user_logout,name = 'logout')
]

# views.py
def user_logout(request):
if request.method == "POST":
    logout(request)
    return HttpResponseRedirect('login')

# template:
<a href="#" onClick="document.getElementById('logoutform').submit()" class="btn">
Logout</a>
<form id="logoutform" method="POST" action="{% url 'logout' %}">
{% csrf_token %}
<input type="hidden">
</form>

Страница просто перезагружается и перенаправление не происходит.

1 Ответ

0 голосов
/ 26 октября 2018

Я думаю, вы сделали это сложнее, чем нужно.Django поставляется с LogoutView и позволяет выходить из системы с запросами GET.Вы можете использовать это представление выхода из системы или изменить свое собственное на:

from django.shortcuts import redirect

def user_logout(request):
    logout(request)
    return HttpResponseRedirect('login')  # assumes you have a URL pattern with name='login'.

Обратите внимание, что HttpResponseRedirect('login') будет перенаправлять на относительный URL 'login', поэтому вы можете в конечном итоге получить /logout/login.Вы должны либо использовать абсолютный URL-адрес (например, HttpResponseRedirect('/login/')), изменить URL-адрес (например, return HttpResponseRedirect(reverse('login'))), либо использовать ярлык redirect, который позаботится о том, чтобы изменить его.

После того, как вы изменили выход из системыпросмотреть, вы можете удалить форму и просто ссылку на страницу выхода из системы.

<a href="{% url 'logout' %}" onClick="document.getElementById('logoutform').submit()" class="btn">Logout</a>
...