반응형
[Django] context_processors
#Context_processor?
- templates에서 사용되는 변수들을 미리 정의하여, 중복 선언을 피하는 방법이다.
- 코드(프로세서 호출)에서 중복성을 추가하는 대신 데이터(템플릿 변수)에서 중복성을 제거한다.
- RequestContext를 사용하여 템플릿을 랜더링 할 때, 사용자가 정의한 프로세서를 전달한다.
- RequestContextdml의 첫번째 인수는 HttpRequest객체, 즉, view뷰 함수로 전달된 객체 request가 돼야 하며, 두번째 인수는 선택적 프로세서 인수(함수의 목록 또는 튜플)을(를) 취한다.
Ex)
View01 과 view02에서 app, user, ip-address 콘텍스트를 중복해서 사용되고 있다.
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.shortcuts import render
from django.http import HttpResponse
from django.template import loader, Context
from django.template import Template
# Create your views here.
def view01(request):
t = Template('{{ app }}: {{ message }}')
c = Context({
"app": "My Main-App",
"user": request.user,
"ip-address": request.META["REMOTE_ADDR"],
"message": "I am view01!"
})
return HttpResponse(t.render(c))
def view02(request):
t = Template('{{ app }}: {{ message }}')
c = Context({
"app": "My Main-App",
"user": request.user,
"ip-address": request.META["REMOTE_ADDR"],
"message": "I am view02!"
})
return HttpResponse(t.render(c))
Context Processor를 생성하고,
Context를 RequestContext로 변경하여 정의한 Context_processors를 사용한다.
아래에서 선택적 프로세서 인수로 튜플과 함수 모두 사용한다.
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.shortcuts import render
from django.http import HttpResponse
from django.template import RequestContext
from django.template import Template
# Create your views here.
# context processor 추가
def contextProcessor(request): # 함수 명은 사용자 임의로 사용 가능하다.
return {
"app": "My Main-App",
"user": request.user,
"ip-address": request.META["REMOTE_ADDR"],
}
def view01(request):
t = Template('{{ app }}: {{ message }}')
c = RequestContext(request, {"message" : "I am view01!"}, [contextProcessor])
return HttpResponse(t.render(c))
def view02(request):
t = Template('{{ app }}: {{ message }}')
c = RequestContext(request, {"message": "I am view02!"}, [contextProcessor])
return HttpResponse(t.render(c))
참고 : 장고마스터하기
반응형
'Python > Django' 카테고리의 다른 글
| [Django] Performing raw SQL queries : SQL 쿼리 맵핑 (0) | 2019.01.21 |
|---|---|
| [Django] Custom template tags and filters 사용자 정의 템플릿 태그(1) (0) | 2019.01.19 |
| [Python][Django] HttpRequest 객체 정보 (0) | 2019.01.12 |
| [Python][Django] 모델 (0) | 2019.01.11 |
| [Python][Django] settings.py 의 Database API (0) | 2019.01.10 |