Quando é apropriado usar processadores de contexto Django?
-
06-07-2019 - |
Pergunta
Se cerca de metade dos meus pontos de vista exigir o mesmo conjunto de dados, é apropriado usar um processador de contexto para tornar os dados sempre disponível, ou há uma maneira melhor de evitar a repetição do código para obter os dados através de vários pontos de vista sem consultar os dados se ele não será usado na exibição?
Solução
O inicializador RequestContext
irá executar qualquer processador de contexto listados no arquivo de configurações, mas ele também tem uma lista de processadores adicionais para executar. Qualquer processador de contexto de uso geral pode ser colocado em settings.py e outros mais específicos podem ser adicionados ao RequestContext
numa base caso-a-caso.
Deixe RequestContext
por completo para não executar qualquer processador de contexto.
# 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'})
Outras dicas
Você pode filtrar quais vistas realmente usar processadores contexto de apenas RequestContext(request)
passando apenas para aqueles que precisam, por exemplo:.
# 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'})