2016-03-02 3 views
0

Здравствуйте, я хочу иметь разные подзаголовки под navbar для разных страниц. поэтому я использовал {% block %}, который я узнал. но на этот раз он ничего не показывает, никакого контента нет. я делаю это неправильно?вместо {% block content%} Я использую {% block sub-header%} под navbar, разве это не так?

Внутри navbar.html

<nav> 
    <div id="bottom header" style="background:yellow;"> 
    {% block sub-header %} 
    {% endblock %} 
    </div> 
</nav> 

затем внутри base.html меня

extends navbar.html 

затем внутри index.html У меня

extends base.html 

{% block sub-header %} 
<p>hello yall</p> 
{% endblock %} 
+1

Я думаю, что шаблонный движок Джанго принимает только буквенно-цифровые символы и _ для тега блока. Поэтому либо используйте «subheader», либо «sub_header». –

+0

@RodXavier, даже перейдя в подзаголовок, что он не работает ... – winixxee

+1

Почему вы расширяете navbar.html в base.html? Я думаю, вы должны использовать include. –

ответ

2

Джанго не обрабатывает блоки включены файлы.

включаемого тегу следует рассматривать как осуществление «делает это subtemplate и включает в себя HTML», а не как «разобрать этот subtemplate и включить его содержимое, как если бы она была частью родительского». Это означает, что нет общего состояния между включенными шаблонами - каждый include - это полностью независимый процесс рендеринга.

Дополнительную информацию см. На сайте documentation.

Проблема заключается в том, что {% block sub_header %} находится внутри navbar.html, который является включенным шаблоном на base.html. Один из способов обойти это ограничение, чтобы извлечь части вашего нав в базе:

<!-- base.html --> 
<body> 
    <nav class="navbar navbar-default navbar-static-top" role="navigation"> 
     {% include 'navbar.html' %} 
     {% block sub_header %}{% endblock %} 
    </nav> 
    <!-- other HTML here --> 
</body> 

Тогда ваши шаблоны, которые расширяют base.html можно использовать {%block sub_header %}

<!-- my-template.html --> 
{% extends 'base.html' %} 

{% block sub_header %} 
    <h1>Hello World!</h1> 
{% endblock %} 
Смежные вопросы