// the find
wemake-services/django-modern-rest
Modern REST framework for Django with types and async support!
django-modern-rest (dmr) is a REST framework for Django that treats type safety as a first-class concern rather than an afterthought. It sits on top of Django's own primitives instead of replacing them, and lets you pick your serialization library — pydantic, msgspec, attrs, dataclasses, or TypedDict — rather than forcing one on you. Aimed at teams that want DRF's ecosystem compatibility with django-ninja's type-driven approach, but without being locked into pydantic.
1. Serializer agnosticism is the real differentiator here — the pluggable serializer design means you can use msgspec for hot paths and pydantic where you need its ecosystem, in the same project. 2. OpenAPI 3.1/3.2 schema generation is built from the actual runtime types, not hand-maintained decorators, and the schemathesis integration means you can property-test your API against its own schema. 3. Native async support that doesn't wrap sync code in sync_to_async — this is genuinely hard to get right in Django and most frameworks punt on it. 4. The test surface is serious: 2000+ tests, 100% coverage, checked with mypy + pyright + pyrefly in strict mode simultaneously — that's a level of type rigor you rarely see in a framework.
1. Very early project (1266 stars, no pre-1.0 stability guarantees visible in the README) — adopting this in production means accepting that APIs will change and you're partly betting on wemake-services staying engaged. 2. The controller pattern diverges from Django's class-based views enough that existing DRF or django-ninja code doesn't migrate automatically; the migration skill files in .agents/ exist precisely because this is painful. 3. No mention of pagination beyond a stub dmr/pagination.py — for any real CRUD API this is a gap you'll be filling yourself. 4. The wemake-services house style (strict linting via wemake-python-styleguide) is baked into the project DNA; if you don't share that aesthetic, contributing upstream or debugging internals will be friction.