[Django] 로그인과 cart (old cart와 세션 저장 차이)-2025-04-08

정지은·2025년 4월 8일
0

나머지공부

목록 보기
12/17

1. 로그인 안 한 상태에서 old_cart에 저장이 안 되는 이유

if self.request.user.is_authenticated:
    current_user = User.objects.filter(id=self.request.user.id)
    ...
  • 이 조건 때문에 로그인한 사용자만 old_cart에 저장됨
  • 즉, 로그인하지 않은 상태에서 장바구니에 담아도, 세션에만 저장되고 DB에는 저장되지 않음

✔️ 정리: 비로그인 사용자는 장바구니가 세션(session)에만 저장됨DB의 User.old_cart에는 저장되지 않음


2. 로그인한 후에도 cart 갯수가 남아 있는 이유

  • Cart 클래스는 세션을 기반으로 작동함:
self.session = request.session
  • 사용자가 로그인 전 장바구니에 담은 내용은 세션에 이미 저장되어 있음
  • 로그인 후, old_cart가 존재하면 복원하지만, 세션에 기존 cart가 이미 있으면 그게 그대로 유지됨
  • Django는 로그인한다고 세션을 지우지 않기 때문에 로그인 전 세션 cart가 유지됨

✔️ 정리: 로그인해도 세션이 그대로 유지되기 때문에 기존 cart 내용도 살아있음


3. 로그아웃하면 cart 수량이 0이 되는 이유

logout(request)
  • 로그아웃 시 Django는 기존 세션을 삭제하고 새로운 세션을 생성
  • cart는 세션에 저장되어 있기 때문에 → 로그아웃하면서 사라짐

만약 logout() 이후에도 cart를 유지하고 싶다면, logout 전에 cart를 old_cart에 저장해두는 작업이 필요합니다.

✔️ 정리: cart는 세션 기반이므로 로그아웃 시 세션 초기화로 함께 사라짐


요약

현상이유
로그인 안 한 상태에서 old_cart에 저장 안됨is_authenticated 조건으로 인해 비로그인 사용자 제외됨
로그인 후에도 cart가 유지됨Django는 로그인해도 세션을 유지함
로그아웃 시 cart 초기화됨Django는 로그아웃 시 세션 삭제함

0개의 댓글