상세 컨텐츠

본문 제목

5. 세션 session

Django

by evaseo 2021. 5. 29. 17:05

본문

1.    개요

(1)     사이트와 특정 브라우저 사이의 "state"를 유지시키는 것

(2) 일정 시간동안 같은 사용자로부터 들어오는 여러가지 요구들을 하나의 상태로 보고 그 상태를 일정하게 유지시키는 기술.

(3) 클라이언트와 서버 사이의 연결이 유지되는 것처럼 하기위해 클라이언트의 정보를 서버 컴퓨터의 일정 공간을 확보해 무언가를 기억할 수 있게 한다.

(4)     매 브라우저마다 임의의 데이터를 저장하게 하고, 이 데이터가 브라우저에 접속할 때 마다 사이트에서 활용될 수 있도록 한다

(5)     연결된 각각의 데이터 아이템들은 "key"에 의해 인용되고, 이는 또다시 데이터를 찾거나 저장하는 데에 이용

(6)     Django는 특정 session id를 포함하는 쿠키를 사용해서 각각의 브라우저와 사이트가 연결된 세션 찾음

(7)     실질적인 세션의 data 사이트의 Database에 기본 설정 값으로 저장
->
쿠키안에 데이터를 저장하는 것보다 더 보안에 유리

(8)     session 속성은 request parameter에서 파생된 view 안에 존재 (view 로 전달되는 HttpRequest의 첫번째 함수)

(9)     기본 30분 유효설정가능
ex) 20
분이 지난 후 다시 실행하면 다시 30분 갱신

(10)   이 세션의 속성은 현재의 사용자(정확히는 브라우저) site에 대한 connection을 의미

 

2.    Django 세션 처리 방법

(1)     세션에 데이터 저장

1)         형식: request.session[key] = 저장할 데이터 값

2)         key에 대응되는 데이터 값을 저장

(2)     세션에 저장된 값 반환

1)         형식1: request.session.get(key)

2)         형식2: request.session[key]

(3)     세션 유효 시간 설정: request.session.set_expiry(지정시간())

 

<views.py>

from django.shortcuts import render
from django.http.response import HttpResponseRedirect
from envs.test.lib.pickle import NONE

# Create your views here.

def mainFunc(request):
    #서버에서 바로 호출 -> urls.py안만남
    return render(request, 'main.html')

def setosFunc(request):
    if 'favorite_os' in request.GET:
        print(request.GET['favorite_os'])
        
        #넘어온 값 세션에 담기
        request.session['f_os'] = request.GET['favorite_os'] # f_os라는 key로 session에 저장
        
        #Redirect방식 - 클라리언트를 통해서 shows호출 -> urls.py 만남  ex) 클라이언트가 링크를 누른 것과 같음
        return HttpResponseRedirect('/shows')
    
    else:
        return render(request, 'setos.html')
    
def showsFunc(request):
    context = {} # dict타입 변수 생성
    
    if 'f_os' in request.session:
        #key-value로  dict에 저장
        context['f_os'] = request.session['f_os'] #request.session.get('f_os')
        context['message'] = '그대가 선택한 운영체제는 %s'%request.session['f_os']
    else:
        context['f_os'] = None
        context['message'] = '허걱 운영체제를 선택하지 않았군요'
        
    request.session.set_expiry(20) #5초동안 세션 유효. 5초 지나면 else블럭 실행
        
    return render(request, 'shows.html', context)​

[더 알아보기] How to use sessions | Django documentation | Django (djangoproject.com)

[참고] Django Tutorial Part 7: Sessions framework - Web 개발 학습하기 | MDN (mozilla.org)

 

'Django' 카테고리의 다른 글

7. html파일  (0) 2021.05.29
6. paging 처리  (0) 2021.05.29
4. Django 설정 파일  (0) 2021.05.11
3. MVT방식 - (3) Template  (0) 2021.05.11
3. MVT방식 - (2) view  (0) 2021.05.11

관련글 더보기