2014-09-12 2 views
1

장고 테스트 프로젝트에 많은 컨텍스트 프로세서를 추가하여 추가하는 것이 좋을 것이라고 생각합니다.django 컨텍스트 프로세서 - 하나의 함수에서 모든 것을 반환하는 방법?

하지만 너무 많아서 각 컨텍스트 프로세서가 "호출"이고 각 컨텍스트 프로세서가 테스트 프로젝트 속도를 늦출 것이라고 들었습니다. 이것은 사실입니다, b/c 제 테스트는 이제 정말 느립니다.

관련 컨텍스트 프로세서를 여러 개 그룹으로 묶어 한 통화에 대한 호출을 상당 부분 없앨 수 있다고 조언했습니다.

하지만 어떻게해야할지 모르겠습니다.

하나의 사전에서 모든 함수를 반환하고 템플릿에 필요한 값을 표시하려면 어떻게해야합니까? 다음은

.... 
def get_subscription_price_free_user(request): 
    return {'subscription_price_free_user': settings.SUBSCRIPTION_PRICE_FREE} 

def get_subscription_price_03Month_user(request): 
    return {'subscription_price_03Month_user': 
     settings.SUBSCRIPTION_PRICE_03MONTHS} 

def get_subscription_price_06Month_user(request): 
    return {'subscription_price_06Month_user': 
     settings.SUBSCRIPTION_PRICE_06MONTHS} 

def get_subscription_price_12Month_user(request): 
    return {'subscription_price_12Month_user': 
     settings.SUBSCRIPTION_PRICE_12MONTHS} 

def get_subscription_price_default(request): 
    return {'subscription_price_default': settings.SUBSCRIPTION_PRICE_DEFAULT} 
.... 

: 여기

SUBSCRIPTION_PRICE_FREE = 0 
SUBSCRIPTION_PRICE_03MONTHS = 40 
SUBSCRIPTION_PRICE_06MONTHS = 60 
SUBSCRIPTION_PRICE_12MONTHS = 99 

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth', 
    .... 
    'globalx.core.context_processors.get_subscription_price_free_user', 
    'globalx.core.context_processors.get_subscription_price_03Month_user', 
    'globalx.core.context_processors.get_subscription_price_06Month_user', 
    'globalx.core.context_processors.get_subscription_price_12Month_user', 
    'globalx.core.context_processors.get_subscription_price_default', 
    .... 
} 

내 context_processors.py 파일의 섹션 : 내가 구독 가격 & 상황에 맞는 프로세서를 선언 할 경우 다음

내 common.py 파일입니다 템플릿에 값을 표시하는 방법 :

{{ subscription_price_free_user }} 
{{ subscription_price_03Month_user }} 
{{ subscription_price_06Month_user }} 
{{ subscription_price_12Month_user }} 
{{ subscription_price_default }} 

답변

1

DOH!

대답은 매우 간단하고 명백합니다. 나는 생각만큼 어렵다고 생각했습니다.

def get_subscription_prices(request): 
    return {'subscription_price_free_user': settings.SUBSCRIPTION_PRICE_FREE, 
      'subscription_price_03Month_user': settings.SUBSCRIPTION_PRICE_03MONTHS, 
      'subscription_price_06Month_user': settings.SUBSCRIPTION_PRICE_06MONTHS, 
      'subscription_price_12Month_user': settings.SUBSCRIPTION_PRICE_12MONTHS, 
      'subscription_price_default': settings.SUBSCRIPTION_PRICE_DEFAULT} 

이 :

SUBSCRIPTION_PRICE_FREE = 0 
SUBSCRIPTION_PRICE_03MONTHS = 40 
SUBSCRIPTION_PRICE_06MONTHS = 60 
SUBSCRIPTION_PRICE_12MONTHS = 99 

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth', 
    .... 
    'globalx.core.context_processors.get_subscription_prices', 
    .... 

} 여기

내 context_processor.py 파일입니다 : 내가 구독 가격을 & 상황에 맞는 프로세서를 선언 할 경우 다음

내 common.py 파일입니다 템플릿의 값을 호출하는 방법입니다.

{{ subscription_price_free_user }} 
{{ subscription_price_03Month_user }} 
{{ subscription_price_06Month_user }} 
{{ subscription_price_12Month_user }} 
{{ subscription_price_default }} 

다른 사람에게 도움이되기를 바랍니다.

관련 문제