Django 3.1 릴리스와 주요 변경 사항

이 글에서는 Django 3.1에 추가된 기능과 바뀐 점을 알아보려 합니다. Django 3.1 release notes를 참고하였습니다.

Django는 3년 마다 LTS를 위해 메이저 버전을 하나씩 올리고, 8개월마다 마이너 버전을 올립니다. 이번에 출시한 3.1은 마이너 업데이트입니다.

Django 릴리스, 공식 사이트: https://www.djangoproject.com/download/

파이썬 호환성

Django 3.1은 파이썬 3.6, 3.7, 3.8을 지원합니다. (파이썬 3.5를 지원하는 버전은 Django 2.2.x입니다.)

새 기능

비동기 뷰와 미들웨어

지난 3.0에서 비동기로 작동하는 애플리케이션을 지원하는 기능이 추가되었는데요. 여기에 이어서 비동기 뷰와 미들웨어도 지원합니다. 함수형 뷰라면 다음과 같이 async 키워드만 붙여주면 됩니다.

import time
import asyncio

from django.utils import timezone 

async def what_time(request):
    before = time.perf_counter()
    asyncio.sleep(10)
    elapsed = time.perf_counter() - before
    result = {
        "message": f"Executed in {elapsed} seconds.",
    }
    return JsonResponse(result)

클래스형 뷰에서는 __call__() 메서드를 정의하라고 하는데, 아직 사용예를 찾지 못해서 추후 코드를 작성해보겠습니다.

모든 데이터베이스에서 JSONField 사용 가능

이전에는 PostgreSQL에서만 사용할 수 있던 JSONField를 모든 데이터베이스에서 사용할 수 있습니다. 따라서 django.contrib.postgres.fields.JSONField는 향후 사라질 계획입니다.

DEFAULT_HASHING_ALGORITHM

쿠키나 토큰, 사용자 세션 등을 인코딩할 때 사용하던 기본 해시 알고리즘을 지정할 수 있습니다. sha1sha256을 선택할 수 있으며, 기본 값은 sha256입니다. 만약 Django 3.1로 이전하고 있는 프로젝트라면, 3.1로 모두 이전하기 전까지는 sha1로 지정해야 합니다. 이 설정은 Django 4.0에서 SHA-1 알고리즘 지원과 함께 사라질 예정입니다.

그 외 자잘한 변경들

중단 예정인 기능(화살표 뒤의 기능을 사용하길 권합니다)

삭제된 기능

요약은 여기까지입니다. 개인적으론 중요하지 않아 보여서 적지 않은 내용이 여러분에겐 더 중요할 수도 있으니, Django 3.1 공식 릴리스 노트를 꼼꼼히 살펴보시는 건 어떨까요?

엘라스틱서치(Elasticsearch)에서 한글 형태소 분석기 은전한잎(eunjeon)으로 인덱스 생성하기

🗒 기사, 2015-06-12 - 엘라스틱서치는 아파치 루씬 기반의 검색엔진입니다. 검색엔진에서는 텍스트를 미리 일정한 규칙에 따라 인덱스하고 이 인덱스를 기반으로 검색을 수행합니다. 한국어 인덱스 작성을 위해서는 형태소 분석기와 같은 도구를 분석기로 사용해야합니다. 이 글에서는 엘라스틱서치에서 오픈소스 한국어 형태소 분석기 은전한잎을 사용해 인덱스를 생성하는 방법을 소개합니다.

장고(Django) 2.2 LTS 릴리스와 주요 변경 사항

🗞 새소식, 2019-04-12 - Django 2.2가 출시되었습니다. 이 글에서는 Django 2.2에 추가된 기능과 바뀐 점을 알아보려 합니다. 릴리스 노트만으로 이해하기가 어려운 기능엔 설명을 조금 보태었습니다.

깔끔한 파이썬 테스트 코드를 위한 페이커(Faker)와 팩토리 보이(Factory Boy)

🗒 기사, 2019-10-01 - 파이썬 테스트용 임시 데이터를 만들 때 유용한 페이커(Faker) 라이브러리를 소개합니다. Django 테스트용 임시 데이터를 생성할 때 사용할 수 있는 팩토리 보이(Factory Boy)도 함께 다룹니다.