[Django] Session
Cart (2)
/ 세션 만들기 /
Cart session 만들기
- cart 폴터에 cart.py , context_processors.py 생성
- settings.py에 templates 등록
cart.py
class Cart():
def __init__(self, request):
self.session = request.session
# Returning user = obtain his/her existing session
cart = self.session.get('session_key')
# New user - generate a new session
if 'session_key' not in request.session:
cart = self.session['session_key'] = {}
self.cart = cart
- 장바구니에서 crud 작업을 해야한다.
- session 을 self.session 으로 저장한뒤 session_key 라고 이름을 설정해주고 세션이 생성되어있는지 조건문을 실행하고 세션이 생성되어 있지 않으면(신규유저 유입시) 새션을 생성해준다.
- 세션을 딕셔너리 키값 ‘session_key’ 로 객체 cart에 다시 저장해준다.
context_processors.py
from .cart import Cart
def cart(request):
return {'cart': Cart(request)}
- TEMPLATES에서 좀 더 간편하게 따로 관리할 겸 따로 뺴줌
- 뷰에 있던 어디에 있던 위치는 상관 없음
모든페이지에서 쓸 수 있게 TEMPLATES에 등록
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'store.views.categories',
'cart.context_processors.cart',
],
},
},
- 카테고리와 같은 원리다.
cart.context_processors.cart
를 템플렛에 등록해주면 모든 페이지에서 자유롭게 사용 가능하다.
Testing the session
- 세션 id 는 q6qydp5ubwwclizy2opaibywsg98utmn
- 서버를 종료하고 python manage.py shell 로 진입해준다.
from django.contrib.sessions.models import Session
세션 모듈 불러와주고 우리가 아까 복사한 세션키를 pk 에 넣어준 뒤 객체 session_k 에 저장- session_k 를 디코딩하면 우리가 처음에 지정한 session_k가 출력된다. -
- 잘 돌아가는거 확인
댓글남기기