2010-05-09 5 views
0

Django 응용 프로그램을 작성 중이며 응용 프로그램의 모든 템플릿에 특정 변수가 필요하다고 가정 해 보겠습니다.Django 응용 프로그램에서 컨텍스트 프로세서를 추가하는 방법

afaik를 다루는 "고전적인"방법은 컨텍스트 프로세서를 작성하고이를 settings.py의 TEMPLATE_CONTEXT_PROCESSORS에 추가하는 것입니다.

내 질문은입니다.이 방법은 응용 프로그램이 실제 프로젝트에서 "독립적"으로되어 있다고 생각하면 올바른 방법입니까?

즉, 해당 응용 프로그램을 새 프로젝트에 배포 할 때 프로젝트가 해당 설정을 사용하여 명시 적으로 엉망이되는 것을 피할 수있는 방법이 있습니까?

답변

1

귀하의 애플 리케이션은 단지 프로젝트의 설정을 건드리지 않고 프로젝트에 추가 할 수 있습니다 가정 올바르지 않습니다 :

그것은 다음과 같이 보입니다.

당신은 당신이 INSTALLED_APPS 튜플에 추가해야하기 때문에, 설정을 편집해야 프로젝트에 응용 프로그램을 추가합니다.

그렇다면 컨텍스트 프로세서 목록을 편집하지 않으시겠습니까?

+0

예. 앱에 부담을주고 싶지 않다는 불안감이 있다면 걱정하지 마세요. 저는 이미 INSTALLED_APPS 및 CONTEXT_PROCESSORS 설정을 애플 리케이션이 요구하는대로 수정한다는 개념에 익숙합니다. – Koobz

+0

편집이 필요한 것은이 두 가지뿐입니까? 얼마 전부터 static_media 폴더에 앱의 정적 미디어가 있는지 확인해야한다는 것을 깨달았습니다. 즉, 앱을 이동할 때 기억해야하는 3 가지 '액션'에 대해 이야기하고 있습니다. 나는 단지 그들이 의미하는 것보다 "더 많은"앱을 얻으려고 노력하고 있다고 생각한다. –

+0

미들웨어는 앱의 또 다른 일반적인 추가 설정입니다. 웅장한 구성에서 URL과 설정에서 소수의 줄을 편집하는 것은 모듈 식 응용 프로그램에서 얻을 수있는 기능적인 측면에서 중요하지 않습니다. – digitaldreamer

0

그래, 컨텍스트 프로세서를 추가하는 것이 가장 좋은 방법입니다.

1

컨텍스트 프로세서는 매우 유용하며 사용하기에 부끄러워하지 않지만 일부 상황에서는 이해가되지 않습니다.

이것은 앱에서 모든보기에 간단한 것을 포함해야 할 때 사용하는 기술입니다. 이것이 올바른 방법이라는 것을 증명할 수는 없지만 팀을 위해 일합니다.

파일 상단에 글로벌 사전 template_vars을 선언 할 것입니다. 모든 뷰는 자신의 변수를이 사전에 추가하여 템플릿에 전달하고 바로 가기에 template_vars을 반환합니다.

template_vars = { 
    'spam': 'eggs', 
    } 

def gallery(request): 
    """ 
    portfolio gallery 
    """ 

    template_vars['projects'] = Projects.objects.all() 
    return render_to_response('portfolio/gallery.html', template_vars, context_instance=RequestContext(request)) 
관련 문제