Когда целесообразно использовать контекстные процессоры Django?
-
06-07-2019 - |
Вопрос
Если для примерно половины моих представлений требуется один и тот же набор данных, целесообразно ли использовать контекстный процессор, чтобы сделать данные всегда доступными, или есть лучший способ избежать повторения кода для передачи этих данных в несколько представлений без запроса данные, если они не будут использоваться в представлении?
Решение
Инициализатор 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'})
Другие советы
Вы можете отфильтровать, какие представления на самом деле используют контекстные процессоры, передавая 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'})