18. session - eungyukm/DjangoBase GitHub Wiki

session

  1. 세션에 로그인 여부값을 저장(user_app/views.py)
            # 로그인에 성공할 경우 세셔에 로그인 여부값을 저장합니다.
            request.session['login_chk'] = True
            request.session['login_user_idx'] = user_model.user_idx
  1. mini_project/templates/top_menu.html에서 사용자 관련 메뉴룰 로그인 여부에 따라 다르게 나타나도록 처리해 줍니다.
<!-- 상단 메뉴 부분 -->
<nav class="navbar navbar-expand-md bg-dark navbar-dark fixed-top shadow-lg">
	<a class="navbar-brand" href="/">SoftCampus</a>
	<button class="navbar-toggler" type="button" data-toggle="collapse"
	        data-target="#navMenu">
		<span class="navbar-toggler-icon"></span>        
	</button>
	<div class="collapse navbar-collapse" id="navMenu">
		<ul class="navbar-nav">
			{% for menu in request.menu_list %}
			<li class="nav-item">
				<a href="/board/board_main?board_info_idx={{menu.board_info_idx}}" class="nav-link">{{menu.board_info_name}}</a>
				{{menu.board_info_name}}
			</li>
			{% endfor %}
		</ul>
		
		<ul class="navbar-nav ml-auto">
			{% if request.session.login_chk == True%}
			<li class="nav-item">
				<a href="/user/modify_user" class="nav-link">정보수정</a>
			</li>
			<li class="nav-item">
				<a href="/user/logout" class="nav-link">로그아웃</a>
			</li>
			{% else %}
			<li class="nav-item">
				<a href="/user/login" class="nav-link">로그인</a>
			</li>
			<li class="nav-item">
				<a href="/user/join" class="nav-link">회원가입</a>
			</li>
			{% endif %}
		</ul>
	</div>
</nav>
  1. 로그아웃 처리를 합니다.
  • mini_project/templates/top_menu.html 파일의 로그아웃 파일로 변경합니다.
<li class="nav-item">
 <a href="/user/logout" class="nav-link">로그아웃</a>
</li>
  1. user_app/urls.py 파일에 logout 주소를 등록합니다.
from django.urls import path
from . import views


urlpatterns = [
    path('join', views.join, name='join'),
    path('login', views.login, name='login'),
    path('modify_user', views.modify_user, name='modify_user'),
    path('join_result', views.join_result, name='join_result'),
    path('login_result', views.login_result, name='login_result'),
    path('logout', views.logout, name='logout'),
]
  1. user_app/views.py 파일에 logout 함수를 만들어주고 logout 처리를 합니다.
def logout(request) :
    # 세션 영역에 저장되어 있는 로그인 값을 삭제합니다.
    del request.session['login_chk']
    del request.session['login_user_idx']

    message = '''
            <script>
                alert('로그아웃 되었습니다.')
                location.href = '/'
            </script>
            '''

    return HttpResponse(message)
⚠️ **GitHub.com Fallback** ⚠️