코딩이야기

Django에서 실제 세션을 사용하지 않고 가짜 세션을 구현하는 방법 본문

BackEnd/장고(Django)

Django에서 실제 세션을 사용하지 않고 가짜 세션을 구현하는 방법

기획자 비제이 2024. 6. 23. 12:00

Django에서 실제 세션을 사용하지 않고 가짜 세션을 구현하는 방법은 여러 가지가 있습니다. 가장 간단한 방법은 Django의 뷰 함수나 미들웨어에서 임시 데이터를 사용하여 세션처럼 동작하도록 만드는 것입니다. 여기서는 쿠키를 사용하여 가짜 세션을 구현하는 방법을 예시로 설명하겠습니다.

1. 설정 파일 수정

먼저 Django 프로젝트의 설정 파일인 settings.py를 수정하여 세션을 비활성화하거나 최소한으로 사용하도록 설정합니다.

 

# settings.py

# 세션 엔진 설정
SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies'  # 서명된 쿠키 기반 세션 사용

# 세션 쿠키 설정
SESSION_COOKIE_NAME = 'fake_sessionid'
SESSION_COOKIE_AGE = 1209600  # 2주 (기본값)
SESSION_COOKIE_SECURE = False  # HTTPS에서만 작동하지 않도록 설정 (개발 중인 경우)
SESSION_EXPIRE_AT_BROWSER_CLOSE = False  # 브라우저 닫을 때 세션 만료 안 되도록 설정

 

 

2. 뷰 함수에서 가짜 세션 사용

뷰 함수에서 쿠키를 사용하여 가짜 세션 데이터를 설정하고 읽는 예시입니다.

 

# views.py

from django.shortcuts import render, redirect
from django.http import HttpResponse

def set_fake_session(request):
    response = HttpResponse("Fake session set!")
    response.set_cookie('fake_session_key', 'fake_session_value', max_age=3600)  # 1시간 동안 유효
    return response

def get_fake_session(request):
    fake_session_value = request.COOKIES.get('fake_session_key')
    if fake_session_value:
        return HttpResponse(f"Fake session value: {fake_session_value}")
    else:
        return HttpResponse("No fake session found.")

def delete_fake_session(request):
    response = HttpResponse("Fake session deleted!")
    response.delete_cookie('fake_session_key')
    return response

 

3. URL 설정

urls.py 파일을 수정하여 뷰 함수를 URL에 매핑합니다.

 

# urls.py

from django.contrib import admin
from django.urls import path
from myapp import views  # 뷰 함수를 import합니다.

urlpatterns = [
    path('admin/', admin.site.urls),
    path('set_fake_session/', views.set_fake_session, name='set_fake_session'),
    path('get_fake_session/', views.get_fake_session, name='get_fake_session'),
    path('delete_fake_session/', views.delete_fake_session, name='delete_fake_session'),
]

 

 

4. 테스트

서버를 실행하고 브라우저에서 URL에 접속하여 테스트합니다.

 

python manage.py runserver

 

 

  • http://127.0.0.1:8000/set_fake_session/에 접속하면 가짜 세션이 설정됩니다.
  • http://127.0.0.1:8000/get_fake_session/에 접속하면 가짜 세션 값을 확인할 수 있습니다.
  • http://127.0.0.1:8000/delete_fake_session/에 접속하면 가짜 세션이 삭제됩니다.