Less synchronization.
More product.
Keep validation, permissions, and domain logic in Django. Add live interactions without maintaining a second application model.
Your models, forms, permissions, and interactive UI. One Django codebase. Publish stable APIs for services and integrations. Let your frontend evolve without changing those contracts.
$ pip install djustmodels · forms · views · templates · servicesmodels · forms · views · templates · servicesmodels · forms · views · templates · servicesOne codebase. Separate apps. Clear responsibilities.
Templates define the UI. Services organize business logic.
Snake Arena runs game state and rendering on the server. djust delivers updates to each player. No custom JavaScript—responsive enough for multiplayer gameplay.
Play with a friend. Feel what server-rendered Python can do.
Play Snake ArenaSearch the queue. Filter by status. Resolve an issue. These interactions run through Python on the server, with djust updating the page.
Your next Django app
Invite teammates to a workspace
Export invoices as CSV
Show low-stock alerts
# Inside toggle_issue(), after matching issue_id
self.demo_issues = [
{**row, "done": not row["done"]}
if row["id"] == issue_id else row
for row in self.demo_issues
]
Django template · the matching button
<button dj-click="toggle_issue"
data-issue-id="{{ issue.id }}"
dj-loading.disable>
{% if issue.done %}Reopen{% else %}Complete{% endif %}
</button>
The button sends an event. Python changes the issue. djust renders the template and patches what changed.
Build your first LiveView →Made for AI-assisted development, and built with it. djust keeps your agent working in Python and Django templates, with fewer frameworks and fewer layers to keep in agreement.
Django supplies the structure: models, forms, views, templates, and migrations. Separate your product into apps for accounts, billing, inventory, or any domain. Within each app, organize business logic in services and define the UI in templates. Give your agent conventions to follow and boundaries you can review.
Keep validation, permissions, and domain logic in Django. Add live interactions without maintaining a second application model.
One Django project can contain many focused apps. Familiar structure makes generated changes easier to place, understand, and review.
Build on Django’s ORM, authentication, forms, and security protections. djust adds checks and diagnostics for interactive views.
The MCP server exposes directives, view methods, project structure, and validation tools.
PROJECT CONTEXTInstructions from your project ↗Generate agent context from your views, handlers, routes, and djust conventions.
SCAFFOLDINGStart with the wiring in place ↗Create a Django project with djust configuration and WebSocket routing already connected.
We’re preparing djust 1.2.0 with full Django template compatibility. Keep familiar template syntax while Rust handles rendering and DOM diffing.
Read the compatibility report ↗Django 5.2.16’s official template tests that reach the engine. Recorded in the djust source.
They inspect Django’s Python node tree (8), loader-cache representation (5), or compiler metadata (2). These are documented internal API boundaries, not unsupported template syntax. All 15 remain counted in the score.
See every case and supported alternatives ↗Every component below is rendering right now, on this page, from the same example its catalogue page shows. Open one to flip its options, copy the two files you would write, and read its props.
Start with Django. Add a LiveView. Let your first interaction show you the difference.
pip install djustA Python view and a Django template.
djust deployOptional managed hosting with djustlive, or deploy your own ASGI app.
Read the deploy guide →The full reference contains 60 directives, with examples and handler details.
dj-clickFire a handler on click. data-* attrs become kwargs.dj-submitSubmit a form. Named fields arrive as handler kwargs.dj-modelTwo-way binding — auto-syncs self.field_name.dj-loadingAuto class / show / hide / disable during a round-trip.dj-navigateClient-side navigation with history — no full reload.dj-auto-recoverFire on WebSocket reconnect with form values + data-*.dj-streamMark an element as a target for real-time streamed updates.dj-uploadBind a file input to a server-configured upload slot.