될때까지

Django settings.py : CART_ID = 'cart_item' ..? 왜만들지? 본문

학습/살이되고 뼈가되어라

Django settings.py : CART_ID = 'cart_item' ..? 왜만들지?

랖니 2022. 4. 27. 15:36
728x90

요새는 유튜브 [오지랖 파이썬 웹 프로그래밍]을 보며 장고를 공부하고 있다. 다행히 이제까지 크게 이해가 안되는 부분이 없어서 잘 따라가고 있고, 재밌게 공부하고 있었는데 이해가 안가는 부분이 생겨서 블로그에 정리를 해 둔다. 지금 당장은 이해가 안가더라도, 미래의 내가 답변할 수 있길 바라며...!

오지랖 파이썬 웹 프로그래밍 6장 Onlineshop 15에서는 장바구니 기능을 위해 Cart class를 만들었다. 이전과는 다르게 cart는 모델을 사용하지 않고, 세션을 활용해서 만들었다. 여기서 세션이란 무엇인가?

((세션)) : HTTP는 서버와 클라이언트가 데이터를 주고 받을 때 사용하는 통신규약이다. 이 HTTP의 특징 중 하나로 stateless가 있다. 클라이언트가 요청을 보내면 서버가 응답을 보내주게 되는 데, 그러고 나서 연결이 바로 끊켜버리는 것이 이 stateless, 상태가 없는 특징이다. 바로 연결을 끊어버리니 리소스 낭비를 줄인다는 장점이 있지만, 예를 들어 한 사용자가 로그인 후 계속해서 다른 서비스를 이용하고 싶은데 연결이 끊켜 매번 새로운 사용자로 인식해버리니 사용자가 불편을 겪게 된다. 이러한 문제점을 해결하기 위해 쿠키와 세션이 등장하게 되었다. 쿠키와 세션은 데이터를 저장한다는 점에서 어느정도 비슷한 개념이다. 이 둘의 차이는 저장소에 있다. 쿠키는 데이터를 클라이언트 측 웹 브라우저에 저장하고, 세션은 서버에 저장한다. 

Cart앱을 따로 만들고, cart.py를 만든 이유는 유지보수를 위해 기능 단위로 앱을 만드는 게 편해서 그렇게 하셨다고 한다. 가만 보니 이제까지는 보통 models.py에 모델을 추가하고, 필요한 기능들은 views.py에 만들고, urls.py에서 주소를 열어주고, templates(화면)를 만들면서 진행했는데 cart.py라는 파일이 새로 생성되었다. 이 부분도 정확히 이해가 되지 않는다.. cart.py라는 파일을 인식할 수 있게 하기 위해 settings.py에 CART_ID라고 적어준건가? 그건 아닌 것 같다. 

장고에서는 앱을 생성하면 settings.py에서 INSTALLED_APPS에 등록시켜주어야지 장고가 앱을 인지한다.

그것과 같은 개념으로 CART_ID를 적어준걸까? 아닌 것 같은데 아무리봐도.. 도대체 왜 config>settings.py에 CART_ID를 적어줘야하는 건지 모르겠다. 구글링도, 공식문서도 찾아봤지만 현재 내 구글링실력으로는 무리다.. 너무 궁금하다. 영상에서는 세션에 들어갈 키 값중 하나이니 옆에 cart_item이 아닌 다른 문자열로 적어줘도 상관이 없다고 했다. 장고에서 세션을 이용하는 방법.. 여기서부터 영상은 몇번이고 반복을 해야겠다. 

 


강의를 보며 복습하다보니.. CART_ID가 필요한지가 문제가 아니였다. 애초에 cart.py에서 Cart클래스를 만들 때 초기화하는 부분에서 세션을 가져올 때 settings.CART_ID라고 적었잖아!? 다시 찾아보니 session이라는 속성은 request parameter에서 파생된 view안에 존재한다고 한다. 근데 왜 그걸 settings.py에 CART_ID로 해서 적어준거지..?

장고 세션에 대해서 처음 접한게 티가 난다. 뭘 모르는 지 정확히 모르겠어서 답답하다.. 조금 더 공부를 해보고 다시 작성해보자.

728x90