본문 바로가기

Study/django

django 기초 - bootstrap을 이용한 사이트 만들기 : 5. 로그아웃과 로그인세션

 - 로그인 세션을 유지해서 홈 화면에서 로그인한 유저의 이름을 000부분에 표시한다.

 - signout 버튼을 눌렀을 때, 로그아웃하고 로그인 페이지로 이동, 이때는 /main/ url을 입력해도 로그인 페이지로 이동된다. (4번 글)

 

1. 이름표시

 - 해당 부분은 header.html에 표시되는 내용이다. 

 - 이름이 OOO이라고 되어있으니까 OOO을 검색하면 어느 부분에 있는지 알 수 있다.

 - views의 index함수에서 context로 session_user_name을 넘겨받았다.

 - {{ session_user_nam }} 으로 바꿔준다.

# views.py
def index(request):
    if request.session.get('user_name'):
        print('------ user is here!!!-------', request.session['user_name'])
        context = {
            'session_user_name' : request.session['user_name'],
            'session_user_id' : request.session['user_id']
        }
        return render(request, 'bbs/home.html', context )
    return render(request, 'bbs/login.html')

2. 로그아웃 구현

 - <a>태그 url 설정 -> urls 등록 -> views 함수 작성

 - request.session에 등록되어 있는 사용자 정보를 초기화한다.

# header.html
 <a href="../sign_out/" class="btn btn-default btn-flat">Sign out</a>

# urls.py
    path('sign_out/', views.sign_out, name='sign_out'),

# views.py
def sign_out(request):
    request.session['user_name'] = {}
    request.session['user_id'] = {}
    request.session.modified = True

    return redirect('main')