01-Django 6.0 미리보기 - 신규 기능
Django 6.0 알파버전이 출시되었고 정식 문서가 배포 되었다.
정식 버전은 2025년 12월 배포 예정.
https://docs.djangoproject.com/en/6.0/releases/6.0/
Django 6.0은 Python 3.12, 3.13 을 공식적으로 지원하고 두 버전을 사용하는 것을 추천한다.
5.2 버전까지는 3.10, 3.11 을 공식적으로 지원한다.
서드파티 앱은 python -Wd 명령을 실행해서 Django 6.0에서의 호환성 문제를 확인해야 한다.
6.0 신규 기능
Content Security Policy support
- XSS 등 콘텐츠 주입 공격 방어를 위한 CSP 표준 지원이 내장되어 미들웨어와 설정만으로 보안 정책 적용 가능
Template Partials
- 템플릿 파일 내에서
{% partialdef %}
와{% partial %}
로 작은 코드 조각을 정의하고 재사용할 수 있어 별도 파일 분리 없이 모듈화 가능
Background Tasks
- HTTP 요청-응답 사이클 밖에서 이메일 발송이나 데이터 처리 등을 백그라운드에서 실행할 수 있는
@task
데코레이터 기반 Tasks 프레임워크 추가
Adoption of Python’s modern email API
- Python 3.6의 현대적 email API(
email.message.EmailMessage
)로 전환하여 더 깔끔하고 유니코드 친화적인 이메일 처리 지원
Minor features
- Admin 인터페이스의 Font Awesome 아이콘 도입, PBKDF2 반복 횟수 증가(120만), 비동기 페이지네이션(
AsyncPaginator
),StringAgg
집계 함수의 범용 지원 등 다양한 개선사항 포함 - Minor features 는 분량이 많아 간략하게 키워드만 정리.
- django.contrib.admin : Font Awesome Free icon set 6.7.2. AdminSite.password_change_form
django.contrib.auth : PBKDF2 반복 횟수 증가(120만) - django.contrib.gis : GEOSeometry.hash M 차원, Rotate, BaseGeometryWidget.base_layer. coveredby와 isvalid 조회, Collection aggregation, GeoHash 와 IsValid 가 MariaDB 12.0.1+에서 지원. 새로운 geom_type 조회와 GeometryType() 데이터베이스 함수가 지형 조회에 사용 가능
- django.contrib.postgres : 전문 검색에 Lexeme 표현식. Model fields, 인덱스, 제약(contraints) 가 django.contrib.postgres 설치 확인 포함. reateExtension, BloomExtension, BtreeGinExtension, BtreeGistExtension, CITextExtension, CryptoExtension, HStoreExtension, TrigramExtension, and UnaccentExtension 에 hints 파라미터 추가 - DB 라우팅에 활용 가능.
- django.contrib.staticfiles : ManifestStaticFilesStorage
번역
- Haitian Creole 지원
Management Commands
- startproject, startapp : 지정한 디렉토리가 없을 때 생성
- shell 실행 시 django.conf.settings 같은 공통 유틸 자동 임포트
Migrations
- 스쿼시된 마이그레이션을 다시 스쿼시 가능
zoneinfo.ZoneInfo
인스턴스 직렬화 지원- 분해 가능한(deconstructible) 객체의 시리얼라이즈에서 파이썬 식별자(identifier) 규칙에 어긋나는 것도 키워드 아규먼트로 사용 가능. 예약어, 공백, 하이픈, 숫자 등.
1 |
|
Model
- 제약조건에
check()
메서드 구현 Aggregate
에order_by
인자로 정렬 지정 가능- 신규 Aggregate.allow_order_by 클래스 속성으로 order_by 지원 여부 지정 가능
StringAgg
집계 함수가 PostgreSQL 외 다른 DB에서도 지원save()
실패 시 (update결과가 0일 경우)Model.NotUpdated
예외 발생로 변경됨. 기존 django.db.DatabaseError- QuerySet.raw() 가 CompositePrimaryKey 을 가진 모델 지원
- CompositePrimaryKey 을 반환하는 서브쿼리도 __exact 지원
JSONField
가 SQLite에서 음수 배열 인덱싱 지원AnyValue
집계 함수 추가 (SQLite, MySQL, Oracle, PostgreSQL 16+). SQL의 ONLY_FULL_GROUP_BY 모드에서 에러를 방지하는 용도로도 사용 혹은 아무 대표값 선정 할 때.GeneratedField
와 표현식 필드가save()
후 자동 새로고침(MySQL, MariaDB처럼 지원하지 않는 것에서도 구현)
페이지네이션
AsyncPaginator
와AsyncPage
로 비동기 페이지네이션 지원
요청/응답
- ASGI 환경에서 HTTP/2의 다중
Cookie
헤더 지원
템플릿
for
루프에서forloop.length
변수 사용 가능querystring
태그가 일관되게?
접두사 추가querystring
태그에서 여러 매핑 인자 지원
테스트
DiscoverRunner
가forkserver
멀티프로세싱 방식에서 병렬 테스트 실행 지원
다음으로는 더 중요 할 수 있는 하위 버전 호환성에 대해 이어갈 예정.
01-Django 6.0 미리보기 - 신규 기능
https://kimjj81.github.io/2025/10/01/Django-6-0-미리보기-01-신규-기능/