2016-06-11 3 views
1

Django 프로젝트에 자체 템플릿 (예 : /project/app1/template, /project/app2/template 등)이 몇 개 있습니다.앱 템플릿에서 컨텍스트 프로세서 사용 설정

그러나 주 앱/프로젝트의 settings.py에 정의 된 템플릿 컨텍스트 프로세서는 해당 앱 템플릿에서 사용할 수 없습니다.

내가 수동으로 context_instance 컨텍스트 (그렇지 않으면 상황에 맞는 프로세서는 템플릿에서 누락) 아이 템플릿의 프로세서 수 있도록하기 위해 설정해야합니다 : 여기

from django.template import RequestContext 

def index(request): 
    return render_to_response('index.html', {}, context_instance=RequestContext(request)) 

입니다 내 settings.py :

PACKAGE_ROOT = os.path.abspath(os.path.dirname(__file__)) 
BASE_DIR = PACKAGE_ROOT 


TEMPLATES = [ 
    { 
     "DIRS": [ 
      os.path.join(PACKAGE_ROOT, "templates"), 
     ], 
     "APP_DIRS": True, 

     "OPTIONS": { 
      ... 
      "context_processors": [ 
       "django.contrib.auth.context_processors.auth", 
       "django.template.context_processors.request", 
       ... 
      ], 
     }, 
    }, 
] 

방법 각보기 기능에 수동으로 context_instance을 삽입하지 않고 앱 템플릿에서 컨텍스트 프로세서에 액세스합니까?

답변

1

"앱 템플릿"과 관련이 전혀 없습니다. 템플릿의 위치에 상관없이 동작이 동일합니다.

컨텍스트 프로세서를 실행하려면 항상 RequestContext가 필요합니다. 다른 것들과는 별도로 요청 객체를 통과했기 때문에 존재해야합니다.

그러나 그 requestcontext를 생성하는 바로 가기가 있고, 즉 render 함수 :이 첫 번째 인수로 요청 걸리는

def index(request): 
    return render(request, 'index.html', {}) 

참고.

관련 문제