Frequently asked questions¶
Short, direct answers. Each answer links to the page with the full detail.
Is Django-Bolt a stripped-down version of Django?¶
No. Django-Bolt removes nothing from Django. It replaces the HTTP server and the API layer — the part that WSGI/ASGI servers, DRF, or Django Ninja would otherwise handle — with a Rust server (Actix Web) and a typed, msgspec-based routing layer. Everything else is the same Django you already run:
| Django feature | In Django-Bolt | Notes |
|---|---|---|
| Django ORM | ✅ Full | Sync and async (aget, afilter, …); return a QuerySet from an async handler and Bolt evaluates it on a bounded thread pool. Async ORM |
| Django Admin | ✅ Full | Auto-mounted from INSTALLED_APPS; served by runbolt, no second server. |
| Django middleware | ✅ Full | BoltAPI(django_middleware=True) runs your settings.MIDDLEWARE stack (sessions, CSRF, auth, messages, CSP…) on API routes. Middleware |
| Django auth / sessions | ✅ Full | JWT and API-key backends are built in (validated in Rust); with django_middleware=True, Django's SessionMiddleware + AuthenticationMiddleware populate request.user / request.session exactly as in Django. Authentication |
| Django signals | ✅ Full | request_started, request_finished, and model signals fire. Signals |
| Django settings / apps | ✅ Full | Same settings.py, INSTALLED_APPS, manage.py. |
| Static & media files | ✅ Full | Served natively from Rust — no WhiteNoise. Static files |
| Third-party Django apps | ✅ Full | Anything that plugs into Django's ORM, admin, or middleware works. |
| Templates / server-rendered views | ✅ | Existing Django URLconf views run through the ASGI mount alongside API routes. ASGI mounts |
The performance comes from where work runs (routing, auth, guards, CORS, rate limiting, compression in Rust without the GIL) — not from removing features. The example project used for the published benchmarks runs the full Django middleware stack, the admin, sessions, and CSRF.
Does Django-Bolt use WSGI? Is it synchronous?¶
No WSGI, no ASGI server, not sync-only. Django-Bolt ships its own HTTP server: Actix Web on the Tokio runtime, called from python manage.py runbolt. Handlers are async def (sync def is also supported). Requests flow HTTP → Rust → your Python handler via PyO3, with no WSGI or ASGI protocol layer in between. See How Django-Bolt works.
Do I need gunicorn or uvicorn?¶
No. runbolt is the production server. It runs multiple processes with SO_REUSEPORT kernel load balancing, recycles workers by RSS or lifetime, respawns on crash, and drains WebSockets on shutdown. See Deployment.
Is Django-Bolt production ready?¶
Django-Bolt is used in production, publishes a benchmark suite and regression gate for every release, and has a full test suite covering routing, auth, middleware, ORM, streaming, WebSockets, and multi-process behavior. It is pre-1.0, so minor releases can still change APIs; the changelog lists every breaking change.
How fast is Django-Bolt?¶
On a 12-core desktop (Ryzen 5 5600G, 8 processes, C=100, loopback) Django-Bolt serves ~311,000 requests/second on a JSON hello-world, ~187,000 req/s for a 10 KB JSON response, and ~21,000–27,000 req/s for a 10-row Django ORM query on SQLite. It is faster than FastAPI, Robyn, and — on 10 KB payloads — faster than Bun-based Elysia and Hono. Numbers, conditions, and reproduction commands are on the Benchmarks page.
How does Django-Bolt compare to Django Ninja and Django REST Framework?¶
All three run inside a Django project. DRF and Django Ninja are Python view layers that still need gunicorn/uvicorn; Django-Bolt replaces the server with Rust and moves auth, guards, and middleware out of Python. Bolt's syntax is closest to Django Ninja/FastAPI (type-hinted function handlers) and it also provides DRF-style ViewSet/ModelViewSet classes. Full grid: Comparison.
How does Django-Bolt compare to FastAPI and Litestar?¶
FastAPI and Litestar are standalone ASGI frameworks — you bring your own ORM, admin, auth, and migrations. Django-Bolt gives you the same type-hinted handler style plus the whole Django stack, and serves requests faster because the HTTP layer is Rust. See Comparison.
Can I migrate from DRF or Django Ninja incrementally?¶
Yes. Add django_bolt to INSTALLED_APPS, create an api.py, and move one endpoint at a time. Existing Django URLconf views (including DRF/Ninja routes) keep working through the ASGI mount while you migrate.
Does Django-Bolt support WebSockets, SSE, and streaming?¶
Yes — WebSockets, Server-Sent Events, and streaming responses are built in and served by the Rust layer.
Does Django-Bolt generate OpenAPI docs?¶
Yes. Swagger UI, ReDoc, Scalar, RapiDoc, and Stoplight Elements are served at /docs by default. See OpenAPI.
Which Python and Django versions are supported?¶
Python 3.12, 3.13, 3.14 (CPython and PyPy). Django 4.2, 5.0, 5.1, 5.2, 6.0.