세션이란, 서버가 클라이언트(웹브라우저)를 인지하게 하는 인증 정보다.
ex) 영화 예매, 비행기표 예매
토큰(Token)과의 차이점 :
서버가 세션을 생성, 그 웹브라우가 누군지를 인지하고 있다는 거야, 로그인하는 순간 서버가 세션을 생성해서 웹브라우저에 요청을 보낸다.
세션이 만료되었다는 뜻은 서버가 이 사람은 윤영우님이야라는 것을 알고 있었는 데 그 정보를 파기한다는 뜻 따라서 사용자의 정보를 일부러 까먹었다는 것을 의미한다.
서버 입장에서는 DA DB라는 좌석을 확보하엿음이라는 정보를 서버가 갖고 그것을 보통 20분을 준다. 다른 사람들에게 선택된 좌석을 선택하지 못하도록 정보를 사람들에게 제공해줌.
일반적으로 세션 만기(expire)시점은 웹브라우저 종료시
까지이다.
단, 좌석 예매, 티켓 예매 같은 경우엔 10분 내지는 20분으로 제한하기도 한다.
세션이 만료되었다고 말하는 것이 그런게 사용자 친화적인 홈페이지를 만드려면 예약 시점으로부터 20분이 경과하여 "예약 시간이 너무 길어져서 처음부터 다시 하세요"라고 안내해 주기도 한다. 영어 창으로는 "Session Expire"이 뜬다.
이건 로그인할 때 만든다.
같은 웹브라우저가 다 꺼져야 세션이 종료되도록 Chrome이랑 Edge등이 설계되어있다.
검색 기록 등을 쿠키에 저장, 그리고 해당 기록 등을 토대로 알맞는 광고나 정보 등을 저장함.
검색 로그 ,기록 등을 웹브라우저가 갖고 있음. 서버에 쿠키 정보를 보내서 해당 정보에 맞는 광고를 보낸다.
다른 웹브라우저 간에는 공유되지 않음
개발자도구의 Application > cookie 에서 확인 가능
세션은 종료되면 정보가 다 날라가지만 쿠키는 정보를 엄청 오랫동안 저장한다.
(클라이언트) 폼에서 아이디, 비번 날린다!
서버에서 그 아이디와 비번에 매칭하는 DB데이터가 있는 지 검색한다.
서버에서 그냥 변수를 하나 만든다!
req.session["id"] = req.POST.get("id") # ["id"]는 세션 변수, ("id")는 정보를 받아오는 name
req.session["pw"] = req.POST.get("pw")
a = 3
print(req.POST.get["id"])
query 셋 에러가 get으로 받아야 되는걸 filter로 받았기 때문에 발생한 것이다.
filter는 바구니에 쌓여잇는 상태로 쿼리 자체를 불러오는데 안에 뭐가 있는지 모르기 때문에 에러 발생
get은 안에 어떤 것을 가져온다고 확실히 선언하기 때문에 에러가 발생 안함.
세션 저장: req.session['key'] = 값
세션 로드: req.session.get('key') = 값
세션 삭제: req.session.pop('key') = 값
redirct : 우리가 설정한 주소로 이동하는 역할을 수행한다.
../main
윗 경로로 이동하는 링크. 절대경로보다 효율성이 좋아서 쓰기 좋음
static 폴더는 기본적으로 settings.py
에 STATIC_URL = '/static/'
라고 설정되어 있어서 static 폴더를 그대로 사용할 예정이라면 따로 설정해주실 필요가 없다!
로그인 시점에 세션을 생성하여 임의의 경로로 접속하였을 때
각자 자유롭게 사이트 만들기 (ex: 쇼핑몰 등)