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** โš ๏ธ