Skip to main content
 首页 » 编程设计

python之Django 注销 URL 重定向问题

2024年10月01日33lautakyan007

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

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

但是,在注销后,重定向是在 next= 参数上完成的,即 url 被重定向到单击注销的同一页面。

作为引用,这是我的 urls.py 中的登录/注销 URL -

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

附言:我使用的是 Django 1.11 和 DRF 3.7.3

请您参考如下方法:

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

查看注销功能源代码后

from django.contrib.auth import logout 
 
def logout_view(request): 
  logout(request) 
  # Redirect to a success page. 

我最终创建了一个调用注销函数并定义重定向页面的自定义注销 View

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 中调用此 View 而不是“注销”

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

现在 settings.py 中的 LOGOUT_URL 重定向将真正起作用

LOGOUT_URL = '/'