Introduction ============ What is Djxi? ------------- Djxi is a small utility library that helps you build "sectioned" Django templates and lightweight class-based endpoints that render individual named sections. It is designed to pair nicely with HTMX-style interactions: each section can be rendered independently and swapped into the page via hx-attributes. Why use Djxi? -------------- - Keep your UI modular: split complex templates into named sections and render only the parts you need. - Bundle related view logic, URLs and templates in a single class to keep Locality of Behaviour and reduce the scattering of snippets across the codebase. - Integrates tightly with Django: messaging, template loading, and standard request/response semantics are preserved. Key ideas --------- - An "Endpoint Battery" (DXEndpointBattery) bundles the templates (inline or file-based), the URL definitions and the handler methods for a single feature. - Templates are split into named sections with a custom tag (default ``) and can include other sections using ``. - Handlers are small methods decorated with `@dx_action` or the method shortcuts like `@dx_get`, `@dx_put`, etc. `DXRouterMixin.url_patterns()` turns these into Django paths you can include in your project's URLConf. Quick example ------------- A minimal inline example (extracted from the project's README): .. code-block:: python from djxi import DXEndpointBattery, dx_action INLINE_TEMPLATE = """
...
""" class SimpleInlineActionRouter(DXEndpointBattery): inline_template = INLINE_TEMPLATE @dx_get("list", name="list") def list(self, request): return self.render_section(request, section_name="todo-list-container") Read the rest of the docs for installation instructions, configuration options and a hands-on tutorial that walks you through the included todo example.