注销不在Django中工作

Ayy*_*yan 2 python django logout

我试图从模板调用signout url然后重定向到主页.

profile.html:

<li><a data-hover="Logout" href="{% url 'signout' %}">Logout</a></li>
Run Code Online (Sandbox Code Playgroud)

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'),
]
Run Code Online (Sandbox Code Playgroud)

views.py:

def signout(request):
    if request.user.is_authenticated():
        logout(request)
        return HttpResponsePermanentRedirect('/')
    else:
        return HttpResponsePermanentRedirect('/')
Run Code Online (Sandbox Code Playgroud)

有时注销功能不起作用,同时单击注销菜单(功能注销正在调用).

Fom*_*aut 6

也许你应该用HttpResponseRedirect而不是HttpResponsePermanentRedirect.因为永久重定向可以使用您想要signout始终运行时不需要的缓存.

你也可以像这样注销:

from django.contrib.auth import views as auth_views

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