본문 바로가기
Python

Django 4.x 주요 기능 정리(4.0, 4.1, 4.2)

by 올엠 2024. 3. 25.
반응형

Django 버전이 3.2 에서 4.x으로 올린지 거희 1년이 다되어 가고 있다.

곧 4.2가 나오면 LTS로 변경되므로 (Django의 경우 각 메이저 버전에서 x.2가 LTS 버전이다)

현재 3.x버전을 사용하고 있는 입장에서 4.x버전이 어떤 부분들이 좋아졌는지 중요한 부분들을 요약해 본다.



1. 타임존 관련된 기본 라이브러리 zoneinfo 사용

기존 Django의 기본 Timezone 라이브러리는  pytz 였다. 이를 Python 기본 라이브러리인 zoneinfo로 변경되었다고 한다.
이로써 zoneinfo의 다양한 기능을 기본적으로 사용할 수 있게되었다.
pytz 은 Django 4.x까지는 같이 쓰이다가 5.0 부터는 제거된다고 하니 zoneinfo에 대해 의존성이 있는지 확인해보는게 좋갰다.
 

2.UniqueConstraint() 함수 제공

데이터베이스 기능에 대한 기능적 고유 제약 조건 생성을 허용이 가능하다.
보다 자세한 내용은 아래에서 확인 할 수 있다.
 

3. 비밀번호 해쉬 라이브러리 scrypt 사용

이 라이브러리는 보통 비밀번호 해쉬에 사용되는데, 기존에 사용되던 OpenSSL 1.1이 더이상 필요 없고 더 적은 메모리를 사용한다. 특히 비밀번호 해쉬에 병렬 무차별 대입 공격을 이용하는데  scrypt는 RFC 7914 를 통해 해커의 공격에 기존보다 잘 대응할 수 있다.
 

4.Redis cache backend 지원

메모리 데이터베이스인 Redis 캐쉬 서버를 환경 설정으로 사용할 수 있도록 기본적으로 지원한다.
설정 방법은 아래를 참고 하면 좋다.

5. 템플릿 기반 렌더링

템플릿 기반으로 화면을 랜더링 할 수 있다. Forms, Formsets, ErrorList에서 활용할 수 있으며, 이를 통해 보다 짧은 코드를 통해 화면 템플릿을 조정하고 운영할 수 있다.
새로 추가된 템플릿 활용 방안을 아래 링크에서 확인 할 수 있다.
 
여기까지가 4.0 주요변경 사항이나 4.1은 다음과 같다.
 

6. 클래스 기반은 화면 비동기 처리 지원

서브 클래스(sub-class)기반으로 부분적인 화면 처리를 지원한다.
 
부분적인 화면을 처리하기 위해서는 보통 JavaScript를 별도로 설치하여 사용하였으나, 이제는 Django자체에서 보다 원활히 사용할 수 있다.

7. 비동기 ORM 인터페이스 제공

QuerySet은 이제 모든 데이터 액세스 작업에 대한 비동기 인터페이스를 제공한다.
기존 동기 작업에 따라 이름이 지정되지만 접두사가 붙습니다(예: acreate(), get() 등).
새 인터페이스를 사용하면 sync_to_async()에서 ORM 작업을 래핑할 필요 없이 비동기 코드로 바로 작성하면 된다.

8. 제약 조건 검증 추가

Meta.constraints 옵션에 Check, unique 그리고 exclusion 조건등을 사용할 수 있다. 보다 간편하게 활용이 가능하다.
 
 

9. 양식 렌더링 접근성 개선

새로운 <div> 기반 양식 템플릿을 사용할 수 있다. 이를 통해 보다 쉽게 양식화와 그룹화가 가능하다고 한다.
앞으로 Django 5.0에서는 양식을 호출할때 {{ form }}과 같은 양식으로 렌더링 스타일을 사용할 수 있다.
FORM_RENDERER 를 통해 로우레벨의 렌더링 API를 설정할 수 있다.
 

10. CSRF_COOKIE_MASKED 지원

CSRF(Cross Site Request Forgery) 교차 사이트 요청 위조 공격을 효과적으로 보호하기 위해 CSRF 쿠키를 마스킹 유무를 CSRF_COOKIE_MASKED 를 통해 설정할 수 있다.
 
기존에 지원하던 CsrfViewMiddleware는 더이상 Cookie 마스킹 기능을 제공하지 않는다고하니 jango 4.1로 업그레이드하는 경우 이전 버전의 Django와 호환되도록 전환하는 동안 CSRF_COOKIE_MASKED를 True로 설정하기 바란다.
 
여기까지가 4.1 주요변경 사항이나 4.2은 다음과 같다.
 
 
마치며
 
이렇게 현재 개발된 4.0과 4.1의 주요기능에 대해서 알아보았다.
비동기 서브 Class를 통한 화면 뷰 제공이나 비동기 ORM 인터페이스 제공이 가장 인상적으로 기억된다.
지금부터 4.2버전이 2023년에 나오기때문에 이제 슬슬 4.1로 테스트를 시작해 봐야 겠다.
반응형