Разъяснение наследования шаблона Flask

#python #jinja2

#python #jinja2

Вопрос:

Я пытаюсь настроить сайт в Flask (ранее знакомый с django), и у меня возникают трудности с получением шаблонов для правильного отображения.

У меня есть base.html , home.html и еще navigation.html . Мой маршрут отображает home.html шаблон, который расширяет base.html шаблон, и это прекрасно работает. Но в моем base.html , есть еще один блок, называемый навигацией. Кажется, что ничего из того, что я ввожу в свой файл навигации, вообще не отображается.

base.html

 <DOCTYPE html>
<html>
 <head>
  <title>{% block title %} {% endblock %} </title>
 </head>

 <body>
  {% block navigation %}
  {% endblock %}
  {% block content %}
  {% endblock %}
 </body>
</html>
 

home.html

 {% extends 'base.html %}

{% block title %} lorem ipsum {% endblock %}

{% block content %} 
 <h1> Here is text </h1>
 <p> Lorem ipsum paragraph </p>
{% endblock %}
 

navigation.html

 {% extends 'base.html %}
{% block navigation %}
<nav>
insert any html here, I used a p tag
</nav>
{% endblock %}
 

Я ничего не могу получить внутри navigation.html для отображения, независимо от того, что это такое.
В django я не помню, чтобы у меня была эта проблема.
Насколько я понимаю, я бы предположил, что я визуализирую home.html и не base.html итак , следовательно home.html может использовать базу, но она не может расширить свой охват, чтобы фактически использовать navigation.html .
Я не уверен, и я устал ломать голову над своим столом.

Комментарии:

1. Итак, вы хотите сказать, что вы navigation.html рендерите, но изображение <nav> не отображается? Если это так, я согласен, что этого никогда не должно произойти. Можем ли мы увидеть код Python, который отображает шаблон, чтобы проверить, действительно ли он отображает шаблон, который вы ожидаете?

Ответ №1:

Здесь я делаю предположение, поэтому, пожалуйста, уточните, не ошибаюсь ли я.

Я подозреваю, что то, что вы имеете в виду сделать, происходит {% include 'navigation.html' %} изнутри index.html (и на всех других страницах, которым нужна такая общая навигация).

Если это так, вы можете удалить {% extends ... %} from navigation.html .

Комментарии:

1. Это то, чего мне точно не хватает! Вчера у меня, должно быть, был адский день, чтобы так бездельничать, спасибо!