[英]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.