context_processors для контекстных переменных, которые вы хотите настроить в каждом представлении, чтобы они были доступны для каждого шаблона.Если у вас есть представление конкретного контекста, это по праву принадлежит представлению.Если вы пытаетесь отодвинуть конструкцию представления определенных контекстных словарей в context_processor, то вы действительно создаете ненужную головную боль и мину, если кто-то когда-либо должен был коснуться вашего кода.Используйте инструменты для того, для чего они предназначены.
Кроме того, гораздо проще написать и прочитать:
context = {
'var1': value1,
'var2': value2,
}
, чем пытаться понять, что он делает.:
context_processor.add_context(request, 'var1', value1)
context_processor.add_context(request, 'var2', value2)
Или, может быть, то, что вы хотите, вот так:
def view(request):
context = {}
...
if x == y:
context['var1'] = value1
else:
context['var2'] = value2
...
return render_to_response('template.html', context,
context_instance=RequestContext(request))
Или, может быть, даже использовать context.update({ 'var1': value1 })
Я скучаю, как второйболее сухой.Учитывая, что вам придется делать это в каждом представлении, которому все равно нужны эти переменные ...
Если у вас есть повторяемая генерация контекста, используйте представления на основе классов, чтобы разумным образом это абстрагировать.Если у вас действительно есть 10 переменных, и каждому шаблону нужны только некоторые из них (но они варьируются от шаблона к шаблону), то просто сделайте их все доступными для всех шаблонов.Пока поколение не дорого, это прекрасно работает, и имейте в виду, что наборы запросов ленивы, поэтому, если вы никогда не оцените их, они никогда не достигнут db