我在我的django测试项目中添加了许多上下文处理器,认为添加很多上下文处理器会没问题。
但是我被告知我有太多,并且每个上下文处理器都是"呼叫"并且每个单独的上下文处理器将减慢我的测试项目。这是真的,b / c我的测试现在非常慢。
我被告知我可以将许多相关的上下文处理器组合为一个,从而消除了对一个上下文处理器的许多调用。
但我不确定该怎么做。
如何从单个字典中的一个函数返回所有内容,然后在模板上显示所需的值?
这是我的common.py文件,其中我声明了订阅价格&上下文处理器:
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文件的一部分:
....
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_user }}
{{ subscription_price_03Month_user }}
{{ subscription_price_06Month_user }}
{{ subscription_price_12Month_user }}
{{ subscription_price_default }}
答案 0 :(得分:1)
DOH!
答案是如此简单明了,我认为这看起来很困难。
这是我的common.py文件,其中我声明了订阅价格&上下文处理器:
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文件:
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_user }}
{{ subscription_price_03Month_user }}
{{ subscription_price_06Month_user }}
{{ subscription_price_12Month_user }}
{{ subscription_price_default }}
我希望这有助于其他人。