¿Es posible verificar si una variable de contexto ya está establecida en una vista dentro de una definición de procesador de contexto personalizada?

El problema es que en algunas vistas, obtengo manualmente una variable de contexto (digamos “G”) de interés, ya que la uso para buscar otra información en esa vista particular (ieviews A, B, C), pero en otras vistas ( es decir, X, Y, Z), necesito obtener esa variable de contexto particular, ya que este contexto debe estar disponible en todas las vistas de mi proyecto (ya que mi plantilla base usa la variable de contexto). El problema con el uso de un procesador de contexto personalizado es que creo que hará una llamada de DB adicional e IDÉNTICA en las vistas (A, B, C), ya que esas vistas ya están recibiendo esa variable de contexto, ya que es necesario para obtener otros datos en la vista. Lo que pensaba era que tal vez podría implementar un procesador de contexto que verifique si esa variable de contexto específica está configurada para una solicitud determinada. es posible? ¿Hay una solución más fácil? El código a continuación puede aclarar el problema para algunas personas.

¡Gracias por cualquier consejo!

def viewA(request): g=G.objects.get(user=request.user) posts = Post.objects.filter(g=g) return direct_to_template(request,'something.html',{'G':g, 'posts':posts}) def viewX(request): stuff = Albums.objects.get(user=request.user) return direct_to_template(request,'something2.html',{'stuff':stuff}) def my_context_processor(request): #redundant in case of viewA (hits db again?) return {'G':G.objects.get(user=request.user)} def ideal_processor(request): #check context vars to see if G is already in there #if it is, return {}, else, return {'G':G.objects.get(user=request.user)} 

 def always_G(request): if not hasattr(request, 'G'): {'G':G.objects.get(user=request.user)} 

Acabo de hacer middleware que configura el variabel G para que solicite. Ya que lo necesito en prácticamente todas las solicitudes de todos modos. es decir:

 class GuildMiddleware(object): def process_request(self, request): request.G = figure_out_what_G_is() return None 

Ahora puede usar request.G en cualquier lugar de sus vistas (y plantillas si está usando direct_to_template, RequestContext, etc.).