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?

Foi útil?

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'})
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top