I have a base.html file which is a side bar menu. like this:
<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>
I also have a text file that I want to show the content. So I configured my view like this:
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)
The destination HTML file which is going to show the data is like this:
{%% extends 'base.html' %%} {{ file_content }}
The problem is, the text file data is now showing up. and if I remove {% extends 'base.html' %}
them the text file data shows up, but I lose the side bar. How can I resolve this issue?
Advertisement
Answer
You should define some blocks to override using Django’s template inheritance:
<!--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 %%}