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
**Email**
- EmailMessage.message() 에 정책 적용.
- EmailMessage.attach() 에 표준 파이썬 이메일 API 오브젝트인 **MIMEPart** 받음
**번역**
- Haitian Creole 지원
**Management Commands**
- startproject, startapp : 지정한 디렉토리가 없을 때 생성
- shell 실행 시 django.conf.settings 같은 공통 유틸 자동 임포트
**Migrations**
- 스쿼시된 마이그레이션을 다시 스쿼시 가능
zoneinfo.ZoneInfo인스턴스 직렬화 지원- 분해 가능한(deconstructible) 객체의 시리얼라이즈에서 파이썬 식별자(identifier) 규칙에 어긋나는 것도 키워드 아규먼트로 사용 가능. 예약어, 공백, 하이픈, 숫자 등.
MyCustomField(**{
'max-length': 100, # 하이픈 포함
'default value': 'test', # 공백 포함
'class': 'special' # 예약어
})
# 예: 일부 라이브러리가 설정 파일에서 가져온 키를 그대로 사용
class MyField(models.Field):
def __init__(self, **kwargs):
# 'cache-timeout'같은 하이픈 포함 키를 받을 수 있음
self.config = kwargs
super().__init__()
def deconstruct(self):
name, path, args, kwargs = super().deconstruct()
# Django 6.0 이전에는 kwargs 키가 유효한 식별자여야 했음
kwargs['cache-timeout'] = self.config.get('cache-timeout')
return name, path, args, kwargs
**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에서 음수 배열 인덱싱 지원