Our template examples so far have been tiny HTML snippets, but in the real world, you'll be using Django's template system to create entire HTML pages. This leads to a common web development problem: across a web site, how does one reduce the duplication and redundancy of common page areas, such as site wide navigation?
A classic way of solving this problem is to use server-side includes, directives you can embed within your HTML pages to include one web page inside another. Indeed, Django supports that approach, with the {% include %}
template tag just described.
But the preferred way of solving this problem with Django is to use a more elegant strategy called templateinheritance. In essence, template inheritance lets you build a base skeleton
template that contains all the common parts of your site and defines "blocks" that child templates can override. Let's see an example of this by creating a more complete template for our current_datetime
view, by editing the current_datetime...