Django에서 Context Processors에 대해 배운 과정
저는 Django를 사용하여 온라인 액세서리 쇼핑몰을 구축하고 있습니다.
제품 카테고리를 보여주기 위해 네비게이션 바(navbar)를 만들었습니다. 처음에는 카테고리를 하드코딩했습니다. 한동안은 이 방식이 잘 작동했습니다.
하지만 문제가 생겼습니다. 새로운 카테고리를 추가할 때마다 네비게이션 바를 수동으로 업데이트해야 했습니다. 이는 매우 비효율적이었습니다.
처음에는 view의 context를 통해 카테고리를 전달할 생각을 했습니다. 하지만 곧 두 번째 문제에 직면했습니다. 모든 페이지에 네비게이션 바가 필요하다는 점이었습니다. 즉, 모든 view에서 동일한 코드를 반복해서 작성해야 한다는 뜻이었고, 이는 코드를 지저분하게 만들었습니다.
더 나은 방법을 찾아냈습니다. 바로 Django Context Processors입니다.
Context processors를 사용하면 모든 템플릿에서 데이터를 사용할 수 있습니다. 모든 view에서 데이터를 일일이 전달할 필요가 없습니다.
Context processors를 사용하기 좋은 경우:
- 네비게이션 카테고리
- 사이트 설정
- 사용자 알림
- 장바구니 데이터
Context processor는 Python 함수입니다. request 객체를 인자로 받아 딕셔너리를 반환합니다.
예시:
def custom_context(request):
return {
"custom_value": "hello from context processors"
}
이 함수를 settings에 등록해야 합니다. TEMPLATES 설정 내의 context_processors 리스트에 추가하세요.
예시:
'OPTIONS': {
'context_processors': [
'myapp.context_processors.custom_context',
],
},
이제 템플릿에서 다음과 같이 데이터를 사용할 수 있습니다:
{{ custom_value }}
이 방법으로 문제가 해결되었습니다. 이제 모든 페이지에서 네비게이션 바가 카테고리 데이터를 자동으로 가져옵니다. 더 이상 코드를 중복해서 작성할 필요가 없습니다.
기능을 구현하다 보면 종종 새로운 개념을 배우게 됩니다. 저에게는 Context Processors가 바로 그런 경험이었습니다.
Source: https://dev.to/merdas369/how-i-learned-about-context-processors-in-django-5e2h