Optimistic Updates & Background Tasks

New decorators for instant UI feedback and non-blocking handlers.

Shopping Cart

@optimisticJIT compute

Subtotal, tax, and total are derived in get_context_data() (JIT pattern). "Add Item" uses @optimistic for instant client-side feedback before the server responds.

ItemPriceQtyLine Total
Wireless Keyboard$79.99 $79.99
USB-C Hub$49.99 $49.99
Monitor Stand$34.99 $34.99

Order Summary

Items4
Subtotal$214.96
Tax (8%)$17.20

Total$232.16

Actions

@optimistic@background

"Add Item" uses @optimistic for instant UI feedback. "Check Inventory" uses @background for non-blocking async.

Decorator Reference

views.pypython
from djust.decorators import optimistic, background, event_handler

class CartView(LiveView):
    def get_context_data(self, **kwargs):
        # JIT pattern: compute derived values at render time
        subtotal = sum(i["price"] * i["qty"] for i in self.items)
        return {"subtotal": subtotal, "tax": round(subtotal * 0.08, 2)}

    @event_handler()
    @optimistic        # Instant client-side feedback before server confirms
    def add_item(self, **kwargs):
        self.items.append({"name": "New", "price": 19.99, "qty": 1})

    @event_handler()
    @background        # Runs without blocking — UI stays responsive
    def check_inventory(self, **kwargs):
        time.sleep(2)  # Simulate slow API call
        self.inventory_status = "All items in stock!"