Когда целесообразно использовать контекстные процессоры Django? - PullRequest
17 голосов
/ 06 мая 2009

Если для примерно половины моих представлений требуется один и тот же набор данных, целесообразно ли использовать контекстный процессор, чтобы сделать данные всегда доступными, или есть лучший способ избежать повторения кода для передачи этих данных в несколько представлений без запроса данные, если они не будут использоваться в представлении?

Ответы [ 2 ]

22 голосов
/ 07 мая 2009

Инициализатор RequestContext будет запускать любые процессоры контекста, перечисленные в файле настроек, но для этого также требуется список дополнительных процессоров. Любые контекстные процессоры общего назначения могут быть помещены в settings.py, а более конкретные могут быть добавлены в RequestContext для каждого конкретного случая.

Не указывать RequestContext, чтобы не запускать контекстные процессоры.

# want context processors listed in settings.py as well as some more specific ones
return render_to_response('template.html', {'foo':'bar'}, context_instance=RequestContext(request, processors = extra_processors))

# want only context processors listed in settings.py
return render_to_response('template.html', {'foo':'bar'}, context_instance=RequestContext(request))

# no context processors
return render_to_response('template.html', {'foo':'bar'})
1 голос
/ 07 мая 2009

Вы можете отфильтровать, какие представления действительно используют контекстные процессоры, передавая RequestContext(request) только тем, кто в этом нуждается, например ::

.
# want context processors
return render_to_response('template.html', {'foo':'bar'}, context_instance=RequestContext(request))

# no context processors
return render_to_response('template.html', {'foo':'bar'})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...