jc.jang

4강 로그아웃 구현하기 본문

Django/Django - 인증편

4강 로그아웃 구현하기

jangstory 2019. 8. 28. 17:13

주제

  • 로그아웃 구현하기

노트

 

  • accounts/urls.py
from django.urls import path
from django.contrib.auth import views as auth_views
from . import views

urlpatterns = [
            ...
    path('logout/', auth_views.LogoutView.as_view(), name='logout'),
            ...    
]

 

  • accounts/layout.html
    <body>
        <a href="{% url 'root' %}"><h1>jc jang blog</h1></a>
        
        {% if user.is_authenticated %}
        <a href="{% url 'profile' %}">{{ user }}</a>
        <a href="{% url 'logout' %}?next={{ request.path }}" 
        		onclick="return confirm('정말로 로그아웃 하시겠습니까?');">로그아웃</a>
        {% else %}
            회원가입
        <a href="{% url 'login' %}?next={{ request.path }}">로그인</a>
        {% endif %}
        <hr>
        {% block content %}
        {% endblock %}
            
        <hr>
        &copy; 2019. jc jang
    </body>
  • 로그아웃에 logout 링크를 걸어준다.
  • next를 인자로 주어서 로그아웃 후 이동할 주소를 설정한다.
  • request.path로 현재 url로 돌아오도록 설정할 수 있다.
  • next 값이 없다면 global_settings.LOGOUT_REDIRECT_URL에서 설정한 값에 따라 이동한다.

 

  • askdjango/settings.py
from django.urls import reverse_lazy

LOGOUT_REDIRECT_URL = reverse_lazy('login')
  • LOGOUT_REDIRECT_URL을 재정의한다.
  • reverse가 아닌 reverse_lazy를 사용하는 이유는 urls.py가 메모리에 올라왔지만 views.py가 메모리에 올라와 있지 않으면 reverse호출 시 에러가 발생하기 때문이다.

 

질문

  • 없음

요약

  • django/contrib/auth/views.py를 임포트하여 로그아웃을 구현할 수 있다.

날짜

  • 오후 5시, 20190828

 

 

Comments