html - template - {% block body %}
¿Cómo se inserta una plantilla en otra plantilla? (3)
Tengo una plantilla muy básica (basic_template.html) y deseo completar los datos con el formato usando otra plantilla parcial. El basic_template.html puede contener varias cosas formateadas con la plantilla parcial.
¿Cómo debería estructurar el código en views.py?
El motivo por el que hago esto es que más adelante se llenará utilizando Ajax. ¿Lo estoy haciendo bien?
Puedes hacer esto usando un bloque. Los bloques son una etiqueta de Plantilla Django que anulará las secciones de una plantilla que 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)
Hacer esto cargará basic_template.html , pero reemplace todo dentro de {% block ''body'' %} {% endblock %}
en basic_template.html con lo que esté dentro de {% block ''body'' %} {% endblock %}
.
Puede leer más sobre bloques y herencia de plantillas en Django Docs
Solo quería agregar diferencias de extender e incluir. Tanto la plantilla como la inclusión pueden usar modelos insertados en la aplicación actual. La plantilla es para uso global de cualquier aplicación. Incluir es para usar en ciertas aplicaciones. Por ejemplo: desea insertar Image Slider en su página de inicio y en la página, pero en ningún otro lugar. Puede crear la aplicación Slider con su propio modelo para mayor comodidad e importar su modelo e incluirlo en esas páginas. Si utilizó la plantilla para este ejemplo, crearía 2 plantillas, una con control deslizante y todo lo demás que tenga otra plantilla.
Tu puedes hacer:
<div class="basic">
{% include "main/includes/subtemplate.html" %}
</div>
donde subtemplate.html
es otra plantilla de Django. En este subtemplate.html
puede poner el HTML que se obtendría con Ajax.
También puede incluir la plantilla varias veces:
<div class="basic">
{% for item in items %}
{% include "main/includes/subtemplate.html" %}
{% endfor %}
</div>