TL;DR
- Django용 완전한 타입 지원·고속·유연·비동기 준비형 REST API 프레임워크인
django-modern-rest가 기여자 32명, 커밋 144개로 개발한 역대 가장 빠른 릴리스 0.16.0을 공개함. PydanticFastSerializer의 역직렬화가 2.2배, 직렬화가 1.33배 빨라지고,BodyMsgspec은msgspec.Struct로 요청 바이트를 직접 디코딩해Body보다 1.6배 빠름.- 동기·비동기 커서 페이지네이션, JWT·토큰·세션 인증용 뷰, CSRF 처리,
TypeVar기본값 등 API 개발 기능이 추가됨. - 설정 병합 규칙을 없애고 엔드포인트 설정이 컨트롤러 설정보다 우선하며, 명시적
[]또는None은 비활성화하고EMPTY는 상위 설정으로 넘어가도록 함. - 패키지에 버전별 에이전트 스킬과
$dmr-upgrade마이그레이션 스킬을 포함하고, 문서 페이지를 모두 마크다운으로 제공함.
프로젝트 소개
django-modern-rest는 Django에서 REST API를 만들기 위한 타입 완전 지원·고속·유연·비동기 준비형 프레임워크임.- Pydantic,
msgspec,attrs를 비롯한 다양한 모델을 지원함. - 예시에서는 Pydantic 모델로 사용자 생성 요청과 응답을 정의하고,
Controller와PydanticFastSerializer를 사용해 요청 본문을 검증한 뒤 UUID를 생성해 응답 모델을 반환함. - 내장 인증은 세션, JWT 헤더와 쿠키를 지원함.
- 디버그 모드에서 OpenAPI 명세를 단일 기준으로 삼아 요청과 응답을 검증함.
- 내장 콘텐츠 협상을 제공하며 콘텐츠 유형별 조건부 요청·응답 모델을 지원함.
- 유연한 오류 처리와 선택적 오류 모델 협상 및 완전한 사용자 지정을 지원함.
- SSE와 JsonLines 스트리밍을 지원함.
- 타입이 지정된 추상화를 직접 만들고 안전하게 재사용할 수 있도록 코드 재사용을 핵심 기능으로 둠.
schemathesis를 활용한 OpenAPI 커버리지 테스트와 속성 기반 테스트 등 고급 테스트 전략을 지원함.- 스킬, 컨텍스트, MCP 등을 포함한 AI 기능을 핵심 기능으로 제공하되, 불필요한 AI 생성 콘텐츠는 포함하지 않는다는 설명임.
- 저장소: https://github.com/wemake-services/django-modern-rest
- 문서: https://django-modern-rest.readthedocs.io
0.16.0 릴리스
opensource_september커뮤니티 행사에서 기여자 32명과 커밋 144개가 참여해 개발한 릴리스로, 프로젝트의 역대 가장 빠른 릴리스임.
성능
PydanticFastSerializer: 역직렬화 2.2배, 직렬화 1.33배 향상.- 새
BodyMsgspec컴포넌트: 요청 바이트를msgspec.Struct로 직접 디코딩하며Body보다 1.6배 빠름. msgspec요청 컨텍스트 검증: 2배 빠름.- 헤더별 콘텐츠 협상 결과를 메모이제이션하며, 브라우저 스타일
Accept헤더에서 최대 65배 빠름. msgspec0.22.0, 비용이 더 낮은 검사, 쿠키, 헤더 및 응답.
기능
- 컴포넌트 기본값:
Body[Model | None] = None사용 가능. - JWT·토큰·세션 인증용
concrete_views:urls.py에 한 줄로 로그인 경로를 정의하고 뷰 코드는 작성하지 않는 방식. - 동기 및 비동기 API를 지원하는 커서(키셋) 페이지네이션.
- 직접 만든 타입 지정
@modify및@validate매개변수를 위한extras=. - 재사용 가능한 컨트롤러를 위한 PEP 696
TypeVar기본값. - 적절한 403 명세와 REST 오류 응답을 제공하는 일급 CSRF 지원.
external_re_path및 중첩external_path.- 오류 처리기에서 새 오류를 다시 발생시켜 다음 계층으로 전달하는 기능.
- OpenAPI: 모든 객체의
x-extensions, 게이트웨이 및 mTLS 보안, OpenAPI 3.2 필드, 컨트롤러 수준의 태그·deprecated·servers, 결정론적 스키마 출력.
모든 설정에 적용되는 단일 규칙
- 설정은 더 이상 계층 간에 병합되지 않음.
- 엔드포인트 설정이 컨트롤러 설정보다 우선하고, 컨트롤러 설정은 일반 설정값보다 우선함.
- 명시적
[]또는None은 설정을 비활성화하고,EMPTY는 상위 설정으로 넘어감. - 설정을 병합하려면
@modify(auth=[*auth, other])처럼 명시적으로 병합함.
AI 도구
- 에이전트 스킬을 패키지에 포함하며,
uvx library-skills로 현재 버전에 맞는 스킬을 설치함. - 새
$dmr-upgrade스킬에는 마이그레이션 프롬프트가 포함되어 있어 코딩 에이전트에 0.15.0에서 업그레이드하도록 요청할 수 있음. - 모든 문서 페이지를 마크다운으로도 제공함.
- 저장소: https://github.com/wemake-services/django-modern-rest
- 문서: https://django-modern-rest.readthedocs.io
- 변경 기록: https://github.com/wemake-services/django-modern-rest/blob/master/CHANGELOG.md
- 전체 릴리스 노트: https://github.com/wemake-services/django-modern-rest/releases/tag/0.16.0
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요