2011-09-19 18 views

Respuesta

25

El título de su pregunta supone que "vista" y "plantilla" son intercambiables, no lo son. Para obtener el sitio actual en una plantilla, debe agregarse al contexto que se utiliza para representar la plantilla. Si está utilizando un RequestContext, puede escribir un procesador de contexto para hacer esto automáticamente.

Puede escribir un procesador de contexto para hacer esto, así:

from django.contrib.sites.models import Site 

def site_processor(request): 
    return { 'site': Site.objects.get_current() } 

A continuación, agregarlo a su TEMPLATE_CONTEXT_PROCESSORS, y usarlo de esta manera:

<h3>{{ site.name }}</h3> 
+0

estoy usando 'django.views.generic.simple.direct_to_template', por lo que debe ser cubierto, ¿verdad? No hay un procesador de contexto incorporado para esto? –

+0

Sí, 'direct_to_template' usa' RequestContext', sin embargo, tendrá que escribir su propio procesador de contexto ya que no hay uno en Django. Alternativamente, puede pasar un argumento a 'direct_to_template' que agrega el sitio actual al contexto. –

+0

¿Por qué la función se llama 'site_processor' en lugar de' site'? –

0

Extrañamente, utilizando el procesador bradleyayers dio resultados nulos, así que en lugar de usar el marco del sitio, utilicé el parámetro dentro de la solicitud.

Así que el procesador se verá así:

def host_processor(request): 
    return { 'host': request.get_host() } 

espero que ayudó

Cuestiones relacionadas