2012-06-11 13 views
43

Tengo una plantilla muy básica (basic_template.html) y deseo completar los datos con el formato de otra plantilla parcial. El basic_template.html puede contener varias cosas formateadas con la plantilla parcial.¿Cómo se inserta una plantilla en otra plantilla?

¿Cómo debo estructurar el código en views.py?

La razón por la que estoy haciendo esto es que más tarde se llenará utilizando Ajax. ¿Lo estoy haciendo bien?

Respuesta

88

Usted puede hacer:

<div class="basic"> 
{% include "main/includes/subtemplate.html" %}  
</div> 

donde subtemplate.html es otra plantilla de Django. En este subtemplate.html puedes poner el HTML que se obtendría con Ajax.

También puede incluir las plantillas varias veces:

<div class="basic"> 
{% for item in items %} 
    {% include "main/includes/subtemplate.html" %}  
{% endfor %} 
</div> 
+0

lo siento, se olvidó de mencionar: el subtemplate podría ser instanciado varias veces en el basic_template.html – WindowsMaker

+0

Eso también es posible, se puede incluir una plantilla en una para el bucle en la plantilla, vea la respuesta actualizada. –

+1

¡genial! ¡gracias! – WindowsMaker

14

Esto se puede hacer usando un bloque . Los bloques son una etiqueta de Plantilla Django que anulará las secciones de una plantilla que se extienda . He incluido un ejemplo a continuación.

basic_template.html

<body> 
{% block 'body' %} 
{% endblock %} 
</body> 

plantilla que desea incluir: (es decir example.html)

{% extends 'basic_template.html' %} 
{% block 'body' %} 
/* HTML goes here */ 
{% endblock %} 

views.py:

return render_to_response(template='example.html', context, context_instance) 

Haciendo esto cargará basic_template.html, pero reemplace todo dentro de {% block 'body' %} {% endblock %} en basic_template.html con lo que está contenido en {% block 'body' %} {% endblock %}.

Puede leer más acerca de los bloques y la herencia de plantillas en el Django Docs

+0

¿Cuál es la diferencia entre hacerlo así? way and doing {% include "main/includes/example.html"%}? –

+2

@MichaelLafayette, piense en extender como herencia mientras se incluye como importación. – Mox

+0

¿Existen ventajas de rendimiento en el uso de un enfoque sobre el otro? El enfoque '{% include" main/includes/example.html "%}' parece más simple (afirma * KISS *). –

Cuestiones relacionadas