Django에서 로그 아웃 한 후 리디렉션 할 위치를 구성하는 방법은 무엇입니까?


88

로그 아웃 후 리디렉션 할 URL을 어디로 설정할 수 있는지 궁금합니다. 로그인 URL을 설정할 수 있다는 것을 알고 있습니다. 내 홈 페이지로 리디렉션하고 싶습니다.

답변:


156

Modern Django (2017+?)에는 LOGOUT_REDIRECT_URL.

이전 Djangos / 원래 답변

아무것도 덮어 쓰거나 래핑 할 필요가 없습니다.

문서에 따르면 next_page로그 아웃보기에 인수를 제공 할 수 있습니다. https://docs.djangoproject.com/en/dev/topics/auth/default/#django.contrib.auth.views.logout

(r'^logout/$', 'django.contrib.auth.views.logout',
                          {'next_page': '/successfully_logged_out/'})

5
모든 인증 URL의 일반 가져 오기를 수행 한 경우 작동하지 않습니다. 아래 YeRuizhi의 대답 @ 사용하기 쉬운
RunLoop

@RunLoop 나는이 다른 방법을 승인합니다. 유일한 문제는 당신이 말한 링크를 만들 때마다 그것을 사용하는 것을 기억해야한다는 것입니다. 따라서 이것이 표준 빌드에서 작동하면 더 안정적입니다. 그렇지 않은 경우 다음으로 가장 쉬운 솔루션이 의미가 있습니다.
Yuji 'Tomita'Tomita 2015 년

나는이 URL을보기에서 뒤집는 방법을 알 수 없습니다.
meteor

이것은 멋진 솔루션입니다. 로그인 페이지로 바로 다시 밀어 넣고 있습니다. 이 줄을 통해 시스템 메시지를 추가하는 방법도 있습니까? 팝업을 만들려면? "성공적으로 로그 아웃했습니다."
arcee123 2015-10-23

'다음 페이지'URL : '/ successfully_logged_out /'의 시작 부분에 슬래시가 있어야합니다. 이것이 없으면 Django는 "logout"URL을 "successfully_logged_out"URL과 연결하려고 시도합니다. 이렇게하면 새로운 '잘못된'URL이 생성됩니다. 사용자가 로그 아웃 한 후 로그인 페이지를 표시하려는 경우 삶을 조금 어렵게 만듭니다.
Rickka 16.07.07

60

더 쉬운 방법 :

로그 아웃 요청 URL에 'next'매개 변수를 추가하십시오. 예를 들면 :

<a href="{% url 'auth_logout' %}?next=/path_to_the_page"> Logout</a>

그러면 로그 아웃보기가 트릭을 수행합니다.

로그인 후 리디렉션의 경우 settings.py에서 간단히 설정할 수 있습니다.

LOGIN_REDIRECT_URL = '/path_to_the_page'
LOGIN_URL = '/path_to_the_page'

35
LOGOUT_REDIRECT_URL 속성 만있는 것이 아니라는 점이 이상합니다.
롭 그랜트


16
우리는 지금 2017을 가지고 LOGOUT_REDIRECT_URL 실제로 :) 노력하고 있습니다
m.antkowicz

좋은 대답입니다. 이것을 내 안에 집어 base.html넣고 잊어 버렸습니다. : D (I 데비안 제시에 빈티지 장고를 사용하고 있습니다. 새 설정을 사용할 수없는 S 있도록)
underscore_d


13

setting.py 파일에서 LOGOUT_REDIRECT_URL을 사용하여 어디에서나 사용자를 리디렉션 할 수 있습니다.

LOGOUT_REDIRECT_URL = 'url name to redirect'

9

현재 페이지로 리디렉션

<a href="{% url 'logout' %}?next={{ request.path | urlencode }}">{% trans "Logout" %}</a>

Django 1.9에서 테스트되었습니다.

참조 : Django의 {% url %} 템플릿 태그를 통해 쿼리 매개 변수를 전달할 수 있습니까?


1
감사합니다. LOGOUT_REDIRECT_URL이 그렇지 않은 경우에 도움이되었습니다 (테스트 및 프로덕션 환경에서 다른 경로가 있기 때문에).
Dmytro Gierman


3

에서 문서 에는 '다음'페이지를 오버라이드 (단순한 래퍼 할 수 있습니다) 자신의 로그 아웃 뷰를 작성할 수 있습니다.


3

다음 매개 변수에 명명 된 URL을 사용할 수도 있습니다.

<a href="{% url 'auth_logout' %}?next={% url 'homepage' %}"> Logout</a>

3

클라이언트 수준에서 리디렉션 URL을 설정하려면 다음에서 수행 할 수 있습니다 urls.py.

(r'^management/logout/$', 'django.contrib.auth.views.logout'),

그런 다음 템플릿에서 :

<a href="{% url 'django.contrib.auth.views.logout' %}?next=/">
    Log out
</a>

어디 next, 당신은 바로 URL을 가리 킵니다.


1

자신의 URL을 정의하고 (일반 인증 URL을 가져 오지 않음) 표준 django 인증보기를 사용하는 경우 경로에 (template_name = 'example.html')을 추가하기 만하면됩니다.

path('logout/',auth_views.LogoutView.as_view(template_name='homepage.html'),name="logout")


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.