Django вводит данные после base.html
У меня есть файл base.html, который представляет собой меню боковой панели. вот так:
<body>
<div class="wrapper">
<nav id="sidebar">
<div class="sidebar-header">
<h3>Welcome!</h3>
</div>
<ul class="list-unstyled components">
<li class="active">
<a href="#list">List</a>
</li>
<li>
<a href="#">Item 1</a>
</li>
<li>
<a href="#">Item 2</a>
</li>
</ul>
</nav>
</div>
</body>
У меня также есть текстовый файл, содержимое которого я хочу показать. Поэтому я настроил свое представление следующим образом:
def list(request):
f = open('textFile.txt', 'r')
file_content = f.read()
f.close()
context = {'file_content': file_content}
print(file_content)
return render(request, "list.html", context)
Получаемый HTML-файл, который будет отображать данные, выглядит следующим образом:
{% extends 'base.html' %}
{{ file_content }}
Проблема в том, что теперь отображаются данные текстового файла. и если я удалю {% extends 'base.html' %}
, то данные текстового файла отобразятся, но я потеряю боковую панель. Как я могу решить эту проблему?
Вы должны определить некоторые блоки для переопределения, используя наследование шаблонов в Django:
<!--base.html-->
<body>
<div class="wrapper">
<nav id="sidebar">
<div class="sidebar-header">
<h3>Welcome!</h3>
</div>
<ul class="list-unstyled components">
<li class="active">
<a href="#list">List</a>
</li>
<li>
<a href="#">Item 1</a>
</li>
<li>
<a href="#">Item 2</a>
</li>
</ul>
</nav>
<main>
{% block content %}{% endblock %}
</main>
</div>
</body>
<!--list.html-->
{% extends 'base.html' %}
{% block content %}{{ file_content }}{% endblock %}
Вам нужно использовать {% block %}
в вашем base.html
. Затем, когда вы расширяете свой шаблон, вы можете указать, что file_content
идет в блоке. Например:
base.html
<div>Sidebar</div>
{% block after_sidebar %}{% endblock %}
конечный файл:
{% extends 'base.html' %}
{% block after_sidebar %}
{{ file_content }}
{% endblock %}
Смотрите больше в Django Docs - Template Inheritance
пожалуйста, внимательно прочитайте о "extend
"
https://docs.djangoproject.com/en/4.1/ref/templates/language/#templates
В вашем base.html должны быть любые теги блока ( {% block 'myname' %}{% endblock 'myname' %}
), которые вы должны расширить.
<-- base.html -->
<body>
<div class="wrapper">
<nav id="sidebar">
<-- ... any staff here -->
</nav>
{% block 'myname' %}{% endblock 'myname' %}
</div>
</body>
после этого:
<-- your template -->
{% extends 'base.html' %}
{% block 'myname' %}{{ file_content }}{% endblock 'myname' %}