Coming soon · djust 1.2.0

Build your app.
Once.

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 djust
your_product/One Django project
accounts/Identity & access
models · forms · views · templates · services
inventory/Your product logic
models · forms · views · templates · services
billing/Plans & payments
models · forms · views · templates · services
Python handlersDjango templatesLive interface

One codebase. Separate apps. Clear responsibilities.
Templates define the UI. Services organize business logic.

Django conventions, end to endNo custom JavaScript requiredRust-powered rendering & DOM updates
01 / THE CAPABILITY

Server-rendered.
Multiplayer.
Yes, this is Django.

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 Arena
BUILT WITH DJUSTOpen live game ↗
SNAKE
ARENA
Player inputPython + DjangoAll players
Server-sideGame state & rendering
MultiplayerConnected players
No custom JSBuilt with djust
02 / YOUR EVERYDAY APP

Useful at work.
Just as live.

Search 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

Product issue queue

Your session · resets on reload
2 open1 completed
  • #1042accountsHigh

    Invite teammates to a workspace

  • #1043billingMedium

    Export invoices as CSV

  • #1044inventoryLow

    Show low-stock alerts

THE HANDLER BEHIND THE BUTTON

Change Python state.
The interface follows.

# 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 →
03 / BUILT FOR AI-ASSISTED DEVELOPMENT

Let AI build the product.
Give it a solid foundation.

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.

01

Less synchronization.
More product.

Keep validation, permissions, and domain logic in Django. Add live interactions without maintaining a second application model.

02

Conventions help
your agent stay on track.

One Django project can contain many focused apps. Familiar structure makes generated changes easier to place, understand, and review.

03

Established foundations.
Framework guardrails.

Build on Django’s ORM, authentication, forms, and security protections. djust adds checks and diagnostics for interactive views.

04 / A FOUNDATION YOU CAN INSPECT

Your Django templates
come with you.

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 ↗
98.57%
1,032 of 1,047 tests pass

Django 5.2.16’s official template tests that reach the engine. Recorded in the djust source.

What about the remaining 15?

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 ↗
05 / A LIBRARY YOU CAN READ

See them running.

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.

Browse all components →
06 / BUILD SOMETHING OF YOUR OWN

Your next feature.
One codebase.

Start with Django. Add a LiveView. Let your first interaction show you the difference.

01
Installpip install djust
02
Build

A Python view and a Django template.

03
Shipdjust deploy

Optional managed hosting with djustlive, or deploy your own ASGI app.

Read the deploy guide →

Ready for the details?

The full reference contains 60 directives, with examples and handler details.

Browse all directives →
A few directives to get you started