정보기술 ·
Django 6.0 공식 출시...보안·백그라운드 작업·템플릿 기능 대폭 강화
파이썬 웹 프레임워크 Django가 CSP 지원, 백그라운드 태스크, 템플릿 파셜 등 주요 기능을 탑재한 6.0 버전을 발표했다.
[한국정보기술신문] Django 소프트웨어 재단이 지난 12월 3일 Django 6.0 버전을 공식 출시했다. 이번 업데이트는 웹 보안 강화를 위한 Content Security Policy 지원, 백그라운드 작업 처리를 위한 Tasks 프레임워크, 템플릿 재사용성을 높이는 Template Partials 등 세 가지 주요 기능을 포함하고 있다.
Django는 완벽주의자를 위한 웹 프레임워크라는 슬로건 아래 개발된 파이썬 기반 오픈소스 프레임워크로, 전 세계 수많은 웹 애플리케이션 개발에 활용되고 있다. 이번 6.0 버전은 5.2 버전 이후 약 1년 만에 출시된 메이저 업데이트다.
Content Security Policy 기본 지원
이번 버전의 가장 큰 특징은 웹 보안 표준인 Content Security Policy의 네이티브 지원이다. CSP는 크로스 사이트 스크립팅과 같은 콘텐츠 주입 공격으로부터 웹 애플리케이션을 보호하기 위한 보안 메커니즘이다.
개발자들은 이제 ContentSecurityPolicyMiddleware를 통해 CSP 헤더를 손쉽게 추가할 수 있으며, SECURE_CSP 및 SECURE_CSP_REPORT_ONLY 설정을 통해 정책을 구성할 수 있다. 또한 템플릿에서 nonce 값을 지원하여 인라인 스크립트의 안전한 실행이 가능해졌다.
Django 소프트웨어 재단은 공식 문서를 통해 CSP 설정 방법과 뷰 단위로 정책을 재정의하거나 비활성화할 수 있는 데코레이터에 대한 자세한 가이드를 제공하고 있다.
백그라운드 작업 처리 프레임워크 도입
Django 6.0은 HTTP 요청-응답 사이클 외부에서 코드를 실행할 수 있는 Tasks 프레임워크를 기본 제공한다. 이를 통해 이메일 전송이나 데이터 처리 같은 작업을 백그라운드 워커에 위임할 수 있게 되었다.
개발자는 task 데코레이터를 사용하여 작업을 정의하고 enqueue 메서드로 작업을 큐에 추가할 수 있다. Django는 작업 생성과 큐잉을 담당하지만, 실제 작업 실행은 별도의 외부 프로세스나 서비스에서 관리해야 한다. 이번 릴리스에는 개발 및 테스트를 위한 두 가지 기본 백엔드가 포함되어 있다.
템플릿 파셜로 재사용성 향상
Template Partials 기능은 템플릿 파일 내에서 작은 단위의 재사용 가능한 컴포넌트를 정의할 수 있게 해준다. 개발자들은 partialdef 태그로 파셜을 정의하고 partial 태그로 렌더링할 수 있다.
또한 template_name#partial_name 문법을 통해 get_template, render, include 태그 등에서 파셜을 참조할 수 있어, 별도 파일로 분리하지 않고도 모듈화된 템플릿 구조를 유지할 수 있다. django-template-partials 서드파티 패키지를 사용 중인 개발자를 위한 마이그레이션 가이드도 제공된다.
Python 3.12 이상 필수, 이메일 API 현대화
Django 6.0은 Python 3.12, 3.13, 3.14 버전을 지원하며, Python 3.10과 3.11에 대한 지원은 5.2.x 시리즈를 마지막으로 종료되었다. 이에 따라 관련 의존성 라이브러리들도 Python 3.12 이상을 지원하는 버전으로 업데이트해야 한다.
또한 이메일 처리 시스템이 Python 3.6에서 도입된 modern email API로 전환되었다. 기존의 Compat32 레거시 API 대신 email.message.EmailMessage 클래스를 중심으로 한 새로운 인터페이스는 더 깔끔하고 유니코드 친화적인 이메일 작성 환경을 제공한다.
다양한 기능 개선 및 마이너 업데이트
이 외에도 Django 6.0은 관리자 인터페이스에 Font Awesome 6.7.2 아이콘 세트 도입, PBKDF2 비밀번호 해시 반복 횟수 120만회로 증가, 아이티 크레올어 번역 지원 추가 등 다수의 마이너 기능을 포함한다.
데이터베이스 관련 기능으로는 StringAgg 집계 함수의 범용 지원, AsyncPaginator 및 AsyncPage를 통한 비동기 페이지네이션, JSONField의 SQLite 음수 인덱싱 지원 등이 추가되었다.
DEFAULT_AUTO_FIELD 설정의 기본값이 BigAutoField로 변경되는 등 일부 하위 호환성이 깨지는 변경사항도 포함되어 있어, 기존 프로젝트를 업그레이드하는 개발자들은 공식 문서의 마이그레이션 가이드를 참고해야 한다. Django 6.0은 Django 공식 웹사이트와 파이썬 패키지 관리 시스템을 통해 다운로드할 수 있다.
한국정보기술신문 정보기술분과 유상헌 기자 news@kitpa.org