Django Changelog 정리

김효일·2024년 9월 30일

Django 3.0 (2019.12)

1. Python 3.6 이상 지원

  • 설명: Django 3.0은 Python 3.6 이상에서만 동작하도록 Python 2 지원을 완전히 중단했습니다.
  • 영향: Python 2에서 작성된 코드를 Python 3로 마이그레이션해야 하며, 3.5 이하의 Python 버전을 사용하는 프로젝트는 Python 3.6 이상으로 업그레이드가 필요합니다.

2. ASGI 지원 (비동기 기능 도입)

  • 설명: Django 3.0부터 ASGI(Asynchronous Server Gateway Interface)를 지원합니다. 이를 통해 Django는 웹소켓 및 비동기 요청/응답을 처리할 수 있게 되었습니다.
  • 영향: 실시간 통신이 필요한 웹 애플리케이션 개발이 더욱 쉬워졌으며, Django의 비동기 기능을 확장할 수 있습니다.

3. MariaDB 지원

  • 설명: Django 3.0에서 MySQL의 포크인 MariaDB를 공식적으로 지원하기 시작했습니다.
  • 영향: MariaDB를 사용하는 프로젝트에서 더 안정적으로 Django를 사용할 수 있습니다.

4. models.JSONField 지원**

  • 설명: PostgreSQL 외의 데이터베이스에서도 JSONField를 사용할 수 있게 되었습니다.
  • 영향: JSON 데이터를 다양한 DB 백엔드에서 사용할 수 있어, 데이터 저장 구조를 유연하게 설계할 수 있습니다.

Django 3.1 (2020.08)

1. 비동기 뷰 추가

  • 설명: Django 3.1에서는 비동기 뷰(async def)를 완전하게 지원하게 되었습니다. 이는 특정 뷰에서 동기적으로 작동할 필요가 없을 때 효율성을 높일 수 있습니다.
  • 영향: 비동기 처리가 필요한 부분에서 성능 향상을 기대할 수 있습니다.

2. 비동기 미들웨어 지원

  • 설명: 기존에는 미들웨어가 동기적으로만 작동했으나, 비동기 미들웨어 작성이 가능해졌습니다.
  • 영향: 전체 애플리케이션의 비동기 처리를 강화할 수 있습니다.

3. 기타 새로운 기능들

  • django.db.models.JSONField (모든 데이터베이스에서 사용 가능).
  • Model.Meta의 constraints에 비동기 Q 객체 사용 가능.

Django 3.2 (2021.04, LTS)

1.자동 기본(primary key) 필드 추가

  • 설명: AutoField가 기본적으로 모델의 primary key로 설정되었습니다.
  • 영향: 이제 모델에서 명시적으로 primary key를 정의하지 않으면, Django가 자동으로 BigAutoField를 생성합니다.

2. 기본적으로 비동기 지원 강화

  • 설명: Django 내부적으로 비동기 작업을 더 쉽게 수행할 수 있게 개선되었습니다.
  • 영향: 비동기 작업을 기본적인 프로젝트에 더 원활하게 통합할 수 있습니다.

3. 환경 설정 기능 강화

  • 설명: 환경 파일에서 기본적으로 사용할 수 있는 settings 관련 기능이 강화되었습니다. .env 파일 등을 쉽게 통합할 수 있도록 개선되었습니다.
  • 영향: 환경 변수 기반의 설정 관리가 더욱 편리해졌습니다.

4. 쓸모없는 migration 파일 자동 정리

  • 설명: squashmigrations 명령을 통해 불필요하게 생성된 migration 파일들을 자동으로 병합할 수 있습니다.
  • 영향: 데이터베이스 마이그레이션 파일 관리를 더 쉽게 할 수 있습니다.

Django 4.0 (2021.12)

1. Python 3.8 이상 필요

  • 설명: Django 4.0부터는 Python 3.8 이상에서만 실행됩니다.
  • 영향: Python 3.7 이하 버전에서 작성된 프로젝트는 Python 3.8로 업그레이드해야 합니다.

2. 비동기 뷰 및 ORM 지원 강화

  • 설명: Django ORM에서 비동기 메서드들이 추가되었습니다. 예를 들어, Model.save()와 같은 ORM 작업을 비동기 방식으로 사용할 수 있게 되었습니다.
  • 영향: 데이터베이스 작업에서 비동기 처리를 적용할 수 있어 성능을 최적화할 수 있습니다.

3. 폼 렌더링 개선

  • 설명: 폼 렌더링이 개선되어, 더 직관적인 템플릿 및 HTML 생성을 지원합니다.
  • 영향: 폼을 렌더링할 때 커스터마이징이 쉬워지고 코드가 간결해집니다.

4. 제거된 기능들

  • 설명: Django 4.0에서는 Django 3.x에서 deprecated된 일부 기능이 제거되었습니다.
  • 예시: django.utils.six, python_2_unicode_compatible 등의 기능이 완전히 제거되었습니다.

Django 4.1 (2022.08)

1. 비동기 ORM 쿼리 지원 강화

  • 설명: 비동기 쿼리를 더 간편하게 작성할 수 있게 ORM이 개선되었습니다. 예를 들어, async 키워드를 사용하여 비동기 쿼리를 처리할 수 있습니다.
  • 영향: 비동기 데이터베이스 작업에서 성능 최적화를 쉽게 구현할 수 있습니다.

2. 캐시 프레임워크 개선

  • 설명: MemcachedCache 대신 PyMemcacheCache가 기본 캐시 백엔드로 설정되었습니다.
  • 영향: 더 안정적이고 빠른 캐시 백엔드를 사용할 수 있습니다.

3. 미들웨어 순서가 더 명확하게 정의됨

  • 설명: 미들웨어 실행 순서가 개선되어, 명확한 순서대로 실행되도록 보장되었습니다.
  • 영향: 미들웨어 작성 및 디버깅이 더 쉬워졌습니다.

Django 4.2 (2023.04, LTS)

1. Python 3.10 이상 필요

  • 설명: Django 4.2부터는 Python 3.10 이상에서만 실행됩니다.
  • 영향: Python 3.9 이하 버전에서 작성된 프로젝트는 Python 3.10으로 업그레이드해야 합니다.

2. 비동기 View와 미들웨어 지원 강화

  • 설명: 비동기 View와 미들웨어에서 성능 최적화가 이뤄졌으며, 더 많은 곳에서 비동기를 사용할 수 있게 개선되었습니다.
  • 영향: Django의 성능을 극대화하기 위한 비동기 처리가 더 확장됩니다.

3. PostgreSQL의 논리적 복제 지원

  • 설명: PostgreSQL에서 논리적 복제를 지원하여, 데이터베이스 확장성과 안정성을 높일 수 있습니다.
  • 영향: PostgreSQL 데이터베이스를 사용하는 프로젝트에서 더욱 유연한 데이터 복제가 가능해집니다.

4. Formset 기능 강화

설명: Formset 기능이 개선되어 여러 폼을 한 번에 처리할 때 성능이 최적화되었습니다.

Django 5.0 (2023.12)

1. Python 3.10 이상 지원

  • 설명: Django 5.0부터는 Python 3.10 이상만 지원합니다. 이전 버전의 Python은 더 이상 사용이 불가합니다.
  • 영향: Python 3.9 이하 버전에서 작업 중인 프로젝트는 Python 3.10 이상으로 업그레이드가 필요합니다.

2. ORM 비동기 작업 강화

  • 설명: Django 5.0에서는 ORM 비동기 작업이 더욱 강화되었습니다. 데이터베이스와의 비동기 상호작용이 보다 효율적으로 개선되어 save(), delete() 같은 주요 메서드에서도 비동기 처리가 가능합니다.
  • 영향: 비동기 웹 애플리케이션에서 성능 향상과 코드 간결화가 기대됩니다.

3. 기본 캐시 백엔드로 PyMemcacheCache 채택

  • 설명: Django 5.0에서는 기본 캐시 백엔드로 PyMemcacheCache가 사용됩니다. 기존 MemcachedCache와의 차별점은 성능과 안정성입니다.
  • 영향: 캐시 시스템을 사용하는 경우 PyMemcacheCache를 사용해 성능을 높일 수 있으며, 설정 시 기존 캐시 백엔드와의 호환성도 신경 써야 합니다.

4. 사용자 정의 비밀번호 검증기 추가

  • 설명: Django 5.0에서는 password_validators 설정을 통해 비밀번호 검증기를 사용자 정의할 수 있는 기능이 추가되었습니다.
  • 영향: 더 세밀한 보안 정책을 설정할 수 있어, 사용자 비밀번호의 복잡성을 강화할 수 있습니다.

5. Django Views 비동기 지원 강화

  • 설명: Django의 뷰는 이미 비동기를 지원하고 있었으나, Django 5.0에서는 더욱 최적화된 비동기 처리와 관련된 여러 API가 개선되었습니다.
  • 영향: 실시간 데이터 처리, 대규모 요청 처리 등에 더 높은 성능을 발휘합니다.

6. 사용 중단(deprecated)된 기능 제거

  • Django 4.x 버전에서 사용 중단(deprecated) 예정이었던 여러 기능이 Django 5.0에서 완전히 제거되었습니다. 이를 사용하던 코드는 마이그레이션이 필요합니다.
  • 예시:
    • django.utils.translation.ugettext(), ugettext_lazy() 등 u로 시작하는 번역 함수들이 삭제되었습니다. 대신 gettext() 및 gettext_lazy()를 사용해야 합니다.
    • django.utils.six 모듈 완전 제거.

7. 다양한 개선 사항

  • 향상된 커스텀 관리 명령어: Django 5.0에서는 관리 명령어(management commands) 작성 시 비동기 메서드를 정의하고 호출할 수 있게 개선되었습니다.
  • ORM 쿼리 및 성능 최적화: 여러 ORM 작업에서 성능을 향상시키는 최적화 작업이 적용되었습니다.

Reference

profile
기록을 통한 성장

0개의 댓글