코딩이야기

Django 템플릿에서는 request.COOKIES를 직접 접근할 수 없습니다. 본문

BackEnd/장고(Django)

Django 템플릿에서는 request.COOKIES를 직접 접근할 수 없습니다.

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

Django 템플릿 언어에서는 request.COOKIES를 직접 접근할 수 없습니다.
대신, 뷰에서 쿠키 값을 컨텍스트에 전달한 후, 템플릿에서 이를 사용하여 조건문을 구성해야 합니다

1. 뷰에서 쿠키 값 전달

뷰 함수에서 쿠키 값을 컨텍스트로 전달

 
# views.py

from django.shortcuts import render

def check_fake_session(request):
    fake_session_value = request.COOKIES.get('fake_session_key')
    return render(request, 'check_fake_session.html', {'fake_session_key': fake_session_value})


# view에서 쿠키를 체크하여 해당 url로 전달  
# render class에  html로 전달할 인자를 선언

 

 

2. URL 설정

URL 설정 파일에서 뷰 함수를 매핑

 

# urls.py

from django.contrib import admin
from django.urls import path
from myapp import views

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

3. HTML 템플릿에서 조건문 사용

템플릿 파일에서 쿠키 값을 기반으로 조건문을 구성합니다.

 

<!-- check_fake_session.html -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Check Fake Session</title>
</head>
<body>
    {% if fake_session_key %}
        로그인한 상태 
    {% else %}
        로그인 전 
    {% endif %}
</body>
</html>

4. 테스트

앞 포스트에 설명한 가짜 세션을 이용하여 테스트.