簡體   English   中英

問題 Django 注銷 URL 重定向

[英]Issue with Django logout URL redirection

我在 Django 設置中配置了登錄和注銷重定向設置,如下所示 -

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

但是,在注銷后,重定向是在next=參數上完成的,即 url 被重定向到單擊注銷的同一頁面。

作為參考,這是我的urls.py中的登錄/注銷 URL -

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

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

上面的解決方案不適用於 Django 2.1+

查看注銷后 function 源代碼

from django.contrib.auth import logout

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

我最終創建了一個自定義注銷視圖,它調用注銷 function 並定義了一個重定向頁面

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 = '/'

我遇到了同樣的問題。 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 中定義它

如果您使用 Django 內置身份驗證,您可以在 settings.py 中添加以下行以重定向到登錄頁面。

LOGOUT_REDIRECT_URL ='/accounts/login/'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM