2016-09-18 2 views
2

Я использовал include и extends в файле base.html и ожидал, что они будут включены в ваш заказ. Но шаблон extends добавлен в конец файла.Jinja2 include & extends не работает как ожидалось

Я ожидаю, что мой шаблон, чтобы дать мне выход:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Title</title> 
</head> 
<body> 
<p>Test String from block !</p> 
<footer>text from footer.</footer> 
</body> 
</html> 

но текущий результат являются:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Title</title> 
</head> 
<body> 
<footer>text from footer.</footer> 
</body> 
</html> 
     <p>Test String from block !</p> 

В base.html, первый я включаю header.html, затем content.html, а затем footer.html но оформленный заказ: header.html, footer.html, content.html.

index.html

{% extends "base.html" %} 
{% block content %} 
    <p>Test String from block !</p> 
{% endblock %} 

base.html

{% include "header.html" %} 
<body> 
    {% extends "content.html" %} 
{% include "footer.html" %} 

header.html

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Title</title> 
</head> 

content.html

{% block content %} 

{% endblock %} 

footer.html

<footer>text from footer.</footer> 
</body> 
</html> 

ответ

2

Я хотел бы предложить структурирование немного по-другому. Я использовал структуру, как это недавно, и получил правильные результаты.

index.html:

{% extends "base.html" %} 

{% block head %} 
    <!-- if you want to change the <head> somehow, you can do that here --> 
{% endblock head %} 

{% block content %} 
<body> 
    <p>Test String from block !</p> 
    {% include 'content.html' %} 
</body> 
{% include 'footer.html' %} 
{% endblock content %} 

base.html:

<!DOCTYPE html> 
    <html lang="en"> 
    <head> 
     {% block head %} 
     <meta charset="UTF-8"> 
     <title>Title</title> 
     {% endblock head %} 
    </head> 
    {% block content %} 
    {% endblock content %} 
</html> 

content.html:

<!-- whatever you want in here --> 

footer.html:

<footer>text from footer.</footer> 

Надеюсь, это поможет.

+0

Почему эта вещь произошла раньше? Это ошибка фляги/джиньи, или это было плохо? –

+0

Я думаю, что это был вопрос того, как файлы каким-то образом тянули друг друга, но я не могу сказать точно. – coralvanda

+0

Ваш ответ работает great.i также сделает проблему на 'jinja' github repository.thanks для справки –

0

Я думаю, что вы хотите использовать include вместо extends в

{% extends "content.html" %} 
+0

это не работает, потому что я использую {% block%} –

Смежные вопросы