학습 정리 - 쿠키와 세션 (2025-03-20)

수아·2025년 3월 21일
0

학습 정리

목록 보기
39/51

config/settings.py 의 INSTALLED_APPS 안에 있는

"django.contrib.sessions",

Django의 세션(session) 기능을 활성화하는 앱이다.
세션 데이터 저장 / 세션 저장 방식 제공 / 자동 세션 관리의 기능을 한다.

이 모듈(django.contrib.sessions.backends.db)로 db.sqlite3의 django_session을 관리해준다.


pybo/urls.py에 urlpatterns 안에 path 추가

# dev_14
    path("set-cookie/", views.set_cookie_view, name="set_cookie"),
    path("get-cookie/", views.get_cookie_view, name="get_cookie"),
    path("delete-cookie/", views.delete_cookie_view, name="delete_cookie"),

pybo/views.py에 함수 생성

# dev_14
def set_cookie_view(request):
    """쿠키 설정"""
    response = HttpResponse("쿠키가 설정되었습니다.")
    response.set_cookie("my_cookie", "cooki_value", max_age=3600)  # 1시간동안 유지
    return response


def get_cookie_view(request):
    """쿠키 가져오기"""
    cookie_value = request.COOKIES.get("my_cookie", "쿠키가 없습니다.")
    return HttpResponse(f"쿠키 값 : {cookie_value}")


def delete_cookie_view(request):
    """쿠키 삭제"""
    response = HttpResponse("쿠키가 삭제되었습니다.")
    response.delete_cookie("my_cookie")
    return response

pybo/urls.py에 urlpatterns 안에 path 추가

# dev_14 session
    path("set-session/", views.set_session_view, name="set_session"),
    path("get-session/", views.get_session_view, name="get_session"),
    path("delete-session/", views.delete_session_view, name="delete_session"),

pybo/views.py에 함수 생성

# session은 클라이언트와 무관
def set_session_view(request):
    """세션 설정"""
    # 세션은 request로 받아올 수 있다.
    request.session["username"] = "DjangoUser"  # 세션값 저장
    request.session.set_expiry(3600)  # 1시간 후 만료
    return HttpResponse("세션이 설정되었습니다.")


def get_session_view(request):
    from django.contrib.sessions.models import Session
    from django.contrib.sessions.backends.db import SessionStore

    # 특정 세션 키 조회
    session_key = "session_key1234"  # 실제 저장된 session_key 입력
    session = Session.objects.get(session_key=session_key)

    # 세션 데이터 복호화
    session_data = SessionStore(session_key=session_key).load()
    print(session_data)  # {'username': 'DjangoUser'}

    """세션 가져오기"""
    username = request.session.get("username", "세션이 없습니다.")
    return HttpResponse(f"세션 값 : { username }")


def delete_session_view(request):
    """세션 삭제"""
    request.session.flush()  # 모든 세션 데이터 삭제
    # request.session.clear()  # 세션의 세션 id만 삭제
    return HttpResponse("세션이 삭제되었습니다.")

0개의 댓글