注销在 Django 中不起作用
Signout is not working in Django
我尝试从模板调用注销 url 然后重定向到主页。
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('/')
有时在单击注销菜单时注销功能不起作用(注销功能正在调用)。
或许,您应该使用 HttpResponseRedirect
而不是 HttpResponsePermanentRedirect
。因为永久重定向可能会使用您不需要的缓存,如果您打算 运行 signout
总是。
您也可以这样退出:
from django.contrib.auth import views as auth_views
urlpatterns = [
...
url(r'^signout/$', auth_views.logout, {'next_page': 'home'}, name='signout'),
...
]
您可以使用以下代码,它会起作用。
url(r'^signout/$', 'django.contrib.auth.views.logout',
{'next_page': '/login/'}, 名称='signout')
我尝试从模板调用注销 url 然后重定向到主页。
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('/')
有时在单击注销菜单时注销功能不起作用(注销功能正在调用)。
或许,您应该使用 HttpResponseRedirect
而不是 HttpResponsePermanentRedirect
。因为永久重定向可能会使用您不需要的缓存,如果您打算 运行 signout
总是。
您也可以这样退出:
from django.contrib.auth import views as auth_views
urlpatterns = [
...
url(r'^signout/$', auth_views.logout, {'next_page': 'home'}, name='signout'),
...
]
您可以使用以下代码,它会起作用。
url(r'^signout/$', 'django.contrib.auth.views.logout', {'next_page': '/login/'}, 名称='signout')