Understanding block tags and inheritance

In django there are template tags that store python code so that we do not have to repeat code. For example if there is a nav bar than you can have a variable hold that code in base.html and extend it to other pages. After reading the documentation I learned about tag inheritance.

My question is this, do I have to place all of my django tags in base.html? I would think not but I am confused as to how django determines and defines what {block content is}. By that I mean If base.htmls code has the base format of the website and I want another template page to have the base.html code extended to it but I want a certain page to have its own block tags so that it can show its code on a third page, how would django know to look for and understand the block tags of the second template? Would I do an extends base.html extends template two, measure? Do I have to have unique names for the tags?

Put another way, if a block tag is not in base.html and is instead defined in another template, how can the third template know to look for the block tag in the second template?
Django docs link