본문 바로가기
  • 실행력이 모든걸 결정한다
Django

[Django] 공통 context 변수 설정하기

by 김코더 김주역 2023. 2. 11.
반응형

모든 뷰, 템플릿에 적용되는 공통 context 변수는 어떻게 설정할까?

결론부터 말하자면, 딕셔너리 타입을 반환하는 메소드를 하나 만들어서 settings.py에서 TEMPLATE -> OPTIONS -> context_processors에 추가해주면 된다.

 

 

1. 딕셔너리 타입을 반환하는 메소드 작성

- 파일을 하나 만들어서 딕셔너리 타입을 반환하는 메소드를 작성한다. 반환되는 딕셔너리의 key, value는 각각 context 변수의 key, value 값으로 추가된다. {'timelist':timelist}를 리턴했다는 사실에 주목하면 된다.

 

import time


def get_timelist(self):
    timelist = []
    now = time.localtime(time.time())
    now_year = now.tm_year
    now_mon = now.tm_mon
    for i in range(-6, 7):
        if now_mon + i < 1:
            timelist.append([now_year - 1, now_mon + i + 12])
        elif now_mon + i > 12:
            timelist.append([now_year + 1, now_mon + i - 12])
        else:
            timelist.append([now_year, now_mon + i])
    return {'timelist':timelist}

 

 

2. settings.py의 TEMPLATE -> OPTIONS -> context_processors에 추가

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        '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',
                'utils.context_processors.get_timelist',
            ],
        },
    },
]

 

이제 어떤 템플릿에서든 다음과 같이 context 변수를 사용할 수 있다.

 

반응형

댓글