Misago uses hybrid approach to its templates. This means every page combines two types of templates to produce final result:
Server-rendered templates: Those templates are
.html files written in Django template language that are rendered on the server when user requests page for first time. They contain links, but there are no forms in them and all buttons they contain are
disabled to prevent interaction.
Client-rendered templates: Those templates are
Types of templates used varies between pages and UI elements. For example, Misago's navbar is
navbar.html server rendered template with empty
<div id="user-menu-mount"></div> that
Note: This approach was great for speed back when it was originally implemented years ago, but its tiresome to work with by modern standard. Today React.js framework make it very easy to implement both client and server HTML using React.js components, and my plan is to eventually convert Misago to this model. However this conversion will require what currently appears to be years of work to happen.