Añadir una barra de navegación a todas las plantillas

Quiero mostrar una barra de navegación en cada página. En PHP, escribiría la barra de navegación y luego la incluiría en las otras páginas. Intenté incluir o extender la plantilla de la barra de navegación en las otras plantillas, pero no funcionó. Solo sale “Esta es la página de inicio”. ¿Cómo incluyo correctamente la barra de navegación en cada plantilla?

layout.html

    {% block navbar %}  body { margin: 0; padding: 0; } div{ background: #333; color: #f9f9f9; width: 100%; height: 50px; line-height: 50px; text-align: center; }  
NAVBAR
{% endblock %} {% block content %} {% endblock %}

index.html

 This is the home page. {% extends "layout.html" %} {% block navbar %} {% endblock %} {% block content %} 

This is the homepage!

{% endblock %}

Cree una plantilla base con el diseño y la navegación que serán comunes a todas las páginas. Luego extiende esta plantilla para crear las páginas reales. Agregue bloques a la plantilla base que se pueden anular en los demás.

base.html

     {% block title %} - My Site   
Navbar
{% block content %}{% endblock %}

index.html

 {% extends 'base.html' %} {% block content %} 

{% block title %}Home{% endblock %}

Hello, World!

{% endblock %}

Tenga en cuenta que la barra de navegación se acaba de definir en la plantilla base. No necesita un bloque, y el contenido de las plantillas secundarias se subestitará después de él.

Puede usar una técnica similar para controlar qué elemento se resalta en una barra de navegación.

Puedes incluir la barra de navegación en cada página.

nav.html

  
NAVBAR

layout.html : note que {% include 'nav.html' %}

    {% include 'nav.html' %} {% block content %} {% endblock %}   

index.html

 {% extends "layout.html" %} {% block content %} 

This is the homepage!

{% endblock %}

A veces, es una buena manera de diseñar tu página web. Si rompe la página, por ejemplo: head.html, nav.html, footer.html … puede incluirlos en el layout.html para usarlos.

Si desea usar la misma barra de navegación en todas las páginas, no necesita el {% block navbar %}...{% endblock %} en layout.html. Alternativamente, es posible que tengas que usar {{ super() }} como se describe aquí .