Django v4의 새로운 기능0
2021년 12월에 발표된Django team released Django v4 프레임워크에 대한 다양한 업그레이드, 예를 들어 개선된 맞춤형 및 폼, 폼 집합과
ErrorList
의 템플릿 엔진 사용을 포함한다.그러나 파이썬 버전 3.8, 3.9, 3.10만 Django v4를 지원한다고 발표했다.0. 또한, Django v3.2.x 시리즈는 Python v3을 지원하는 마지막 시리즈입니다.6과 3.7.
이 문서에서는 Django v4의 새로운 기능을 소개합니다.0, Django v4에서 삭제된 이전 타사 버전 중 일부.0. 시작합시다!
Django v4로 업그레이드합니다.0
Django v4로 업그레이드하기 전에0, 현재 Django 버전을 사용할 때 프로젝트 보고서의 버림 경고를 해결하십시오.기본적으로 버림 경고는 해제되어 있습니다.버림 경고를 사용하려면 다음 테스트 명령을 사용합니다.
$ python -Wa manage.py test
장치
버퍼링 경고가 해결되면 Django v4를 설치할 수 있습니다.0. installed Django with pip인 경우
--upgrade
또는 -U
플래그를 사용할 수 있습니다.$ python -m pip install -U Django
Django v4。0 지원 포기
Django v4가 출시됨에 따라0에 따르면 일부 하위 타사 패키지 버전은 더 이상 지원되지 않습니다.아래에서, 너는 모든 목록과 설명을 찾을 수 있다.
PostgreSQL v9。6
PostgreSQL v9.Django v4는 6 및 이전 버전을 지원하지 않습니다.0.Django v4.0PostgreSQL만 지원≥v10.
갑골문2와 18c
Django v4.0은 Oracle만 지원합니다.≥v19.Django 팀은 Oracle 버전 18c 이전 버전에 대한 지원을 공식적으로 취소했습니다.공고에 따르면 2024년 4월 현재 Django v3.2 Oracle 지원 안 함≤v18c.
Django v4에 추가된 패키지 및 함수 무시.0
다음 함수와 타사 패키지는 Django v4에서 지원되지 않습니다.0:
django.utils.text.unescape_entities()
함수django.utils.http.is_safe url()
함수Django v4의 새로운 기능0?
zoneinfo 기본 시간대
Django v4에서0default
pytz
time zone has been migrated to zoneinfo
.pytz
표준 시간대에 대한 지원은 현재 사용되지 않으며 곧 출시될 Django v5에서는 지원되지 않습니다.0 이상 버전입니다.마이그레이션
zoneinfo
은 매우 간단합니다.현재 시간대를 선택하고 폼과 템플릿의 datetime
실례를 현재 시간대로 변환할 수 있습니다.UTC에서 awaredatetime
인스턴스의 작업은 영향을 받지 않습니다.템플릿 기반 폼 보이기
폼, 폼 집합,
ErrorList
은 현재 템플릿 엔진을 사용하여 사용자 정의를 강화합니다.Django팀은
render()
, get_context()
와 template_name
의 Django v4 사용 방식을 변경했습니다.0.render()
옵션은 현재 선택 사항이며 여기서 None
는 모든 옵션의 기본값입니다.다음 코드를 사용하는 경우
render(template_name=None, context=None, renderer=None)
매개 변수 값이 입력되지 않으면 매개 변수는 기본적으로 다음과 같습니다.template_name
: template_name()
Context
: get_context()
에서 반환된 값 포함renderer
: default_renderer
에서 반환된 값formset
렌더링이 Django v4의 템플릿 엔진으로 이동되었습니다.0보기에서
formset
를 사용할 때 템플릿의 management
폼을 사용합니다.aview
의 예를 살펴보겠습니다.from django.forms import formset_factory
from django.shortcuts import render
from myapp.forms import ArticleForm
def manage_articles(request):
ArticleFormSet = formset_factory(ArticleForm)
if request.method == 'POST':
formset = ArticleFormSet(request.POST, request.FILES)
if formset.is_valid():
# do something with the formset.cleaned_data
pass
else:
formset = ArticleFormSet()
return render(request, 'manage_articles.html', {'formset': formset})
manage_articles.html
템플릿의 코드는 다음과 같습니다.<form method="post">
<table>
{{ formset }}
</table>
</form>
국제화
Django v4.0 현재 말레이시아어 번역을 지원합니다. 이것은 Django의 초기 버전에서는 사용할 수 없습니다.개발자들은 현재 프로젝트에서 내용을 말레이어에서 말레이어로 바꿀 수 있다.
현지화
Django v4에서
USE_L10N
매개변수의 기본값이 False
에서 True
로 변경되었습니다.0 모범 사례를 따르십시오.Dango v4 출시와 함께0
USE_L10N
이 사용되지 않습니다.Django v5에서도 지적됐다.x, 기본적으로 표시된 날짜나 숫자는 로컬화됩니다.CSRF 신뢰할 원본
Django v4는
CSRF_TRUSTED_ORIGINS
를 설정할 때 사용됩니다.0hostname
값만 사용할 수 없음;반대로 값은 방안을 포함해야 한다. 예를 들어 http://
또는 https://
.또한 점으로 시작하는 값은 이제 별표로 시작해야 합니다.예를 들어,
.example.com
를 https://*.example.com
로 대체합니다.scrypt 암호 해시 장치
Django v4에는 scrypt password hasher가 추가되었습니다.0은 추가 안전성을 제공합니다. scrypt instead of PBKDF2를 사용하여 공격자가 사용할 수 있는 병행량을 제한하는 것을 권장합니다.
암호 기반 키 파생 기술에 비해 scrypt의 디자인은 더 많은 메모리를 사용합니다.
함수 고유 구속조건
UniqueConstraint()
현재 새로운 *expressions
위치 옵션이 있는데 프로그램원이 Index.expressions
와 같은 데이터베이스 제한을 사용하여 기능의 독특한 제약을 실현할 수 있다. 아래 코드와 같다.from django.db import models
from django.db.models import UniqueConstraint
from django.db.models.functions import Lower
class MyModel(models.Model):
first_name = models.CharField(max_length=255)
last_name = models.CharField(max_length=255)
class Meta:
constraints = [
UniqueConstraint(
Lower('first_name'),
Lower('last_name').desc(),
name='first_last_name_unique',
),
]
Meta.restrictions
옵션은 기능상의 고유한 구속을 모델에 적용하는 데 사용됩니다.결론
이 문서에서는 Django v4의 새로운 기능에 대해 설명합니다.0, Django v4에서 제공하는 일부 타사 패키지.0은(는) 더 이상 지원되지 않으며 기존 버전을 Django v4로 업그레이드하는 데 필요한 단계입니다.0
Django v4.0의 새로운 기능은 본문에서 소개한 기능에만 국한된 것이 아니다.새 기능의 전체 목록을 보십시오Django's official announcement.나는 네가 이 강좌를 좋아하길 바란다.
LogRocket: 네트워크 애플리케이션에 대한 완벽한 가시성
LogRocket는 프런트엔드 어플리케이션 모니터링 솔루션으로 사용자가 자신의 브라우저에서처럼 문제를 재방송할 수 있습니다.LogRocket은 오류의 원인을 추측하거나 화면 캡처와 로그 저장을 묻는 대신 세션을 재방송하여 오류의 원인을 신속하게 파악할 수 있습니다.프레임워크가 어떻든지 간에, 모든 프로그램과 완벽하게 사용할 수 있으며, 플러그인은 Redux, Vuex, @ngrx/store의 다른 상하문에서 기록됩니다.
Redux 작업과 상태를 기록하는 것 외에 LogRocket에는 콘솔 로그, JavaScript 오류, 스택 추적, 제목과 본문이 있는 네트워크 요청/응답, 브라우저 메타데이터 및 사용자 정의 로그가 기록되어 있습니다.또한 DOM은 페이지의 HTML과 CSS를 기록하여 가장 복잡한 한 페이지 프로그램의 픽셀급 완벽한 영상을 재현합니다.
Try it for free .
Reference
이 문제에 관하여(Django v4의 새로운 기능0), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/logrocket/whats-new-in-django-v40-415j텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)