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

StackOverflow https://stackoverflow.com/questions/831301

  •  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'})
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top