Django v4의 새로운 기능0

10786 단어 webdevdjango
작성자Popoola Temitope✏️
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:
  • PostGIS 2.3
  • GDAL 2.0 및 GEOS 3.5
  • cx_ORACLE 7.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 출시와 함께0USE_L10N이 사용되지 않습니다.Django v5에서도 지적됐다.x, 기본적으로 표시된 날짜나 숫자는 로컬화됩니다.

    CSRF 신뢰할 원본


    Django v4는 CSRF_TRUSTED_ORIGINS를 설정할 때 사용됩니다.0hostname값만 사용할 수 없음;반대로 값은 방안을 포함해야 한다. 예를 들어 http:// 또는 https://.
    또한 점으로 시작하는 값은 이제 별표로 시작해야 합니다.예를 들어, .example.comhttps://*.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 .

    좋은 웹페이지 즐겨찾기