Подтвердить что ты не робот

Когда целесообразно использовать контекстные процессоры Django?

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

4b9b3361

Ответ 1

Инициализатор 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'})

Ответ 2

Вы можете отфильтровать, какие представления на самом деле используют процессоры контекста, передавая только 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'})