Pregunta

Me pregunto si alguien puede ayudarme a encontrar el mejor enfoque para el siguiente problema. Estoy creando una aplicación web que utiliza plantillas Django para construir su componente de interfaz de usuario web. Hay una serie de elementos HTML comunes, como el encabezado / pie de página, encabezado HTML, cabecera, etc. Me gustaría codificarlos una vez e " incluir / combinar " con otras plantillas que representan la funcionalidad principal de la aplicación.

¿Es esto posible usando Plantillas Django? Si es así, ¿cómo podría lograr eso?

¿Fue útil?

Solución

Puedes usar la etiqueta extended de django. Digamos que tienes un encabezado y un pie de página. Podría hacer una plantilla, llamada, digamos, foo.django:

<h1>My HTML Header</h1>
<!-- an so on -->

{% block content %}
{% endblock %}

<!-- html footer -->

Luego, puedes hacer otra plantilla, digamos, bar.django:

{% extends "foo.django" %}

{% block content %}
This overrides the content block in foo.django.
{% endblock %}

... que luego se procesará:

<h1>My HTML Header</h1>
<!-- an so on -->

This overrides the content block in foo.django.

<!-- html footer -->

Hay buenas instrucciones sobre las plantillas de django en http://www.djangobook.com/en/ 1.0 / chapter04 / .

Otros consejos

Los métodos {% extended%} y {% include%} son buenos para los elementos de la página que no necesitan información adicional en el contexto.

Tan pronto como necesite insertar más elementos en el contexto desde la base de datos, las etiquetas de plantilla son útiles. Como ejemplo, el contrib. La aplicación de comentarios incluida con Django define una etiqueta de plantilla {% get_comment_list%} para recuperar comentarios adjuntos a una instancia de modelo determinada. Así es como lo utilizarías:

<div>
{% load comments %}
{% get_comment_list for my_instance as comment_list %}
{% for comment in comment_list %}
  <p><a href="{{ comment.url }}">{{ comment.name }}</a> wrote:</p>
  {{ comment.comment }}
{% endfor %}
</div>

Puede guardar esto en una plantilla separada y {% include%} en otras plantillas.

Para su propio contenido, puede escribir sus propias etiquetas de plantillas personalizadas. Siga la documentación . Siempre que sea posible, es conveniente escribir etiquetas utilizando etiqueta simple mecanismo. Encontrarás útiles etiquetas de plantillas listas para usar en djangosnippets.org y el blogosphere .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top