.. index:: pair: HTMX ; introduction pair: HATEOAS ; introduction pair: HATEOAS ; HTMX .. _htmx_introduction: ================================================================================== HTMX introduction ================================================================================== - https://htmx.org/docs/#introduction Introduction ============= Htmx is a library that allows you to access modern browser features directly from HTML, rather than using javascript. To understand htmx, first lets take a look at an anchor tag: .. code-block:: html Blog This anchor tag tells a browser:: "When a user clicks on this link, issue an HTTP GET request to '/blog' and load the response content into the browser window". With that in mind, consider the following bit of HTML: .. code-block:: django This tells htmx:: "When a user clicks on this button, issue an HTTP POST request to '/clicked' and use the content from the response to replace the element with the id parent-div in the DOM" Htmx extends and generalizes the core idea of HTML as a hypertext, opening up many more possibilities directly within the language: - Now any element, not just anchors and forms, can issue an HTTP request - Now any event, not just clicks or form submissions, can trigger requests - Now any HTTP verb, not just GET and POST, can be used - Now any element, not just the entire window, can be the target for update by the request **Note that when you are using htmx, on the server side you typically respond with HTML, not JSON.** This keeps you firmly within the original web programming model, using :ref:`Hypertext As The Engine Of Application State (HATEOAS) ` without even needing to really understand that concept. It's worth mentioning that, if you prefer, you can use the data- prefix when using htmx: .. code-block:: django Click Me!