개발/PYTHON

파이썬 플라스크(python flask) - 세션(SESSION)의 사용

Aireee 2021. 4. 27. 01:33
300x250
반응형

파이썬 플라스크(python flask)로 만든 웹사이트에서 "세션(SESSION)"을 사용하는 방법을 조사해봤다. 세션이 있어야 로그인 정보등이 남아 있어 로그인이 가능하니까 말이다. PHP 에서 그랬었다. 그리고 PHP 에서는 각 페이지마다 session_start() 를 해줘야만 했었는데..... 플라스크는 그렇지 않은 것 같다. 하지만 조금 다른 구석이 있는 것 같기는 하다.

간단히 한번 보자.

# 세션 사용 선언
1  from flask import session, escape

# 세션에는 비밀키가 있어야 한다
2  app.secret_key = b'sadf33"#asdf\n\x]'

# 세션에 값 입력
3  session['username'] = request.from['username']

# 세션에서 값 삭제
4  session.pop('username', None)
5  session['username'' = False

# 세션에 들어간 값을 일반변수(?) 로 옮길 때
6  result = '%s' % escape(session['username'])
7  result = '%s' % session['username']
8  result = session['username']

# 세션에 있는 값을 if 문으로 확인할 때
9  if 'username' in session:

# 세션 값 전체 삭제
10 session.clear()

세션을 사용하려면, 선언을 해줘야 한다. 1번 줄은 선언이라기 보다는 flask 라는 패키지에서 session 이라는 함수?를 가져와라이 말인듯 하다.

PHP 에서는 모든 페이지에 이 선언을 했는데 여기서는 모든 페이지를 통제하는 페이지에 단 한번만 선언을 하는 것 같다.

escape 는 검색해보니 "탈출"이라는 뜻이다 (영어를 몰라 검색했다)

그래서 방탈출게임방 이름에 escape 가 많았던것 같다. 아무튼 escape 는 html 태그를 & 이런 값으로 변신시켜줘서 변수에 태그가 들어가지 않도록 하는 도구라고 보면 되겠다. 뭐 태그를 안넣으면 안써도 될것 같지만, 써주는게 더 안전한 것이니 해주자. 어려운것도 아니고

2번줄, 용도는 정확히 알 수 없으나, app.secret_key 의 값이 존재하지 않으면 페이지는 오류를 출력한다. 꼭쓰자

3번줄, 세션에 값 입력은 딱히 별다를바가 없다. session['key'] = value 방식인 것이다. 완전 초보가 아니라면 추가 설명은 필요없을듯 싶다.

4, 5번줄, 세션에서 값 삭제하는 방법이다. pop 이라는 함수를 사용하는데.. 난 처음본 함수다. 위 문장에서 'username' 즉 키 값만 바꾸면 원하는 세션값이 삭제된다는 것.

6,7, 8번줄은 세션 속 값을 일반변수에도 저장해주는 방식이다. 3개가 다 사용 가능하다. 하지만 6번이 제일 낫다. 속에 혹시나 있을지 모르는 html 태그, 를 제거해서 result 값에 넣도록 처리하는 방식으로 조금은 더 안전하다고 한다. %s 는 문자열이라는게 아닌가 싶다. 그러면 숫자는 %d 를 쓰면 되는걸까? 만약 session['username'] 속의 값이 숫자이면, %s 든, %d 는 아무 상관 없이 출력가능하다. 하지만 값이 문자열인 경우 %d 를 사용하면 에러가 난다.

9번줄도 4번줄 만큼 개인적으로 생소한 방식이다. session 배열 안에 있는 키값 username 이 있을 때를 말한다. 못봤으면 이렇게 한다는걸 몰라서 사용하지 않거나 해맷을 것 같다.

10번줄, 모든 세션의 값을 다 지워버리고 초기화 하는 방법이다. 참 쉽다 그냥 내가 아는 영어단어인 clear() 만 . 찍고 추가하면 된다.

html 페이지 내에서는 어떻게 사용해야 할지는 좀더 공부해보고나서 알려드려야 할 듯 싶다

반응형