Django注销URL重定向问题

时间:2017-12-08 14:48:23

标签: python django django-rest-framework django-authentication django-login

我在Django设置中配置了登录和注销重定向设置,如下所示 -

LOGOUT_REDIRECT_URL = '/login/'
LOGIN_REDIRECT_URL = '/locations/'

但是,在注销重定向后,在 next = 参数上完成,即,将网址重定向到点击注销的同一页面。

作为参考,这是我的 urls.py 的登录/退出网址 -

url(r'^', include('rest_framework.urls', namespace='rest_framework')),

PS :我正在使用Django 1.11& DRF 3.7.3

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。 LOGOUT_REDIRECT_URL并不总是有效。

解决了我的myapp / urls.py:

from django.contrib.auth.views import logout

urlpatterns = [
  url(r'^logout/$', logout, {'next_page': '/login/'}, name='logout'),
]

然后在我想要的模板中,我插入了一个链接:/' myapp' / logout /

您也可以在主urls.py

中定义它

答案 1 :(得分:0)

以上解决方案不适用于Django 2.1 +

查看注销功能源代码

from django.contrib.auth import logout

def logout_view(request):
  logout(request)
  # Redirect to a success page.

我最终创建了一个自定义注销视图,该视图调用注销功能并定义了重定向页面

from django.contrib.auth import logout
from django.conf import settings
from django.shortcuts import redirect

def logout_view(request):
  logout(request)
  return redirect('%s?next=%s' % (settings.LOGOUT_URL, request.path))

只需在您的urls.py中调用此视图即可,而不是“注销”

urlpatterns = [   
  path('accounts/logout/', views.logout_view),
]

现在,settings.py中的LOGOUT_URL重定向将实际起作用

LOGOUT_URL = '/'