Django를 최신 버전으로 업그레이드하는 방법¶
때로는 복잡한 프로세스일 수도 있지만 최신 Django 버전으로 업그레이드하면 다음과 같은 여러 가지 이점이 있습니다.
새로운 기능과 향상된 기능이 추가되었습니다.
버그 수정되었습니다.
이전 버전의 Django는 결국 더 이상 보안 업데이트를 받지 않습니다. (ref:’지원-포함-정책’ 참조)
새로운 Django 릴리스가 출시될 때마다 업그레이드하면 코드베이스를 최신 상태로 유지하여 향후 업그레이드의 부담을 줄일 수 있습니다.
다음은 업그레이드 프로세스를 최대한 원활하게 수행하기 위해 고려해야 할 몇 가지 사항입니다.
읽는 것이 요구됩니다.¶
업그레이드를 처음 하는 경우에는 다른 릴리스 프로세스에 대한 :doc:’가이드’를 읽어보는 것이 유용합니다.
그런 다음 새 Django 버전에서 변경된 사항을 숙지해야 합니다:
업그레이드하려는 버전을 포함하여 현재 Django 버전 이후 버전에서 “final” 릴리스별로 “:doc:’release note”를 읽어보십시오.
관련 버전에 대한 :doc:’감소 시간표’를 보십시오.
이전 버전과 호환되지 않는 변경 사항에 특히 주의를 기울여 성공적인 업그레이드에 무엇이 필요한지 명확하게 파악합니다.
둘 이상의 기능 버전(예: 2.0에서 2.2로)을 통해 업그레이드하는 경우 일반적으로 각 기능 릴리스에 대한 모든 내용을 한 번에 변경하는 것보다 각 기능 릴리스(2.0에서 2.1에서 2.2)를 통해 업그레이드하는 것이 더 쉽습니다. 각 기능 릴리스에 대해 최신 패치 릴리스(예: 2.1의 경우 2.1.15 사용)를 사용합니다.
한 LTS에서 다음 LTS로 업그레이드할 때도 동일한 증분 업그레이드 방법을 사용하는 것이 좋습니다.
의존성¶
대부분의 경우 Django 관련 종속성의 최신 버전으로 업그레이드해야 합니다. 최근에 Django 버전이 릴리스되었거나 일부 종속성이 제대로 유지되지 않은 경우 일부 종속성이 새 Django 버전을 아직 지원하지 않을 수 있습니다. 이러한 경우 종속성의 새 버전이 릴리스될 때까지 기다려야 할 수도 있습니다.
사용 중지 경고를 해결하는 중입니다.¶
업그레이드하기 전에 현재 버전의 Django를 사용하는 동안 프로젝트에서 발생하는 모든 사용 중단 경고를 해결하는 것이 좋습니다. 업그레이드하기 전에 이러한 경고를 수정하면 변경해야 하는 코드 영역에 대한 정보를 얻을 수 있습니다.
Python에서는 기본적으로 사용되지 않음 경고가 표시되지 않습니다. “-Wa’ Python 명령줄 옵션 또는 :envvar:”PYthon WARINGS” 환경 변수를 사용하여 이 옵션을 켜야 합니다. 예를 들어 테스트를 실행하는 동안 경고를 표시하려면 다음을 수행합니다.
$ python -Wa manage.py test
...\> py -Wa manage.py test
Django 테스트 러너를 사용하지 않는 경우, 지원 중단 경고를 숨기는 콘솔 출력이 캡처되지 않았는지 확인해야 할 수도 있습니다. 예를 들어 `pytest <https://docs.pytest.org/>`__를 사용하는 경우:
$ PYTHONWARNINGS=always pytest tests --capture=no
업그레이드 프로세스를 계속하기 전에 현재 버전의 Django를 사용하여 더 이상 사용되지 않는 경고를 해결하십시오.
타사 응용 프로그램은 여러 버전의 Django를 지원하기 위해 사용되지 않는 API를 사용할 수 있으므로 설치한 패키지의 사용되지 않음 경고가 반드시 문제를 나타내는 것은 아닙니다. 패키지가 최신 버전의 Django를 지원하지 않는 경우 문제를 제기하거나 Django에 대한 꺼내기 요청을 보내는 것을 고려하십시오.
설치, 설치본¶
준비가 되면 :doc:’새 Django 버전을 설치해야 합니다. :mod:’가상 환경’을 사용하는 경우 주요 업그레이드인 경우 먼저 모든 종속성을 포함하는 새 환경을 설정할 수 있습니다.
ip_와 함께 django를 설치했다면 “–upgrade” 또는 “-U” 플래그를 사용할 수 있습니다.
$ python -m pip install -U Django
...\> py -m pip install -U Django
테스트중¶
새 환경이 설정되면 :doc:’전체 테스트 스위트’를 실행합니다. 다시 말해, 사용되지 않는 경고를 테스트 출력에 표시하도록 켜는 것이 유용합니다. ``manage.py runserver”를 사용하여 앱을 수동으로 테스트하는 경우에도 플래그를 사용할 수 있습니다.
$ python -Wa manage.py test
...\> py -Wa manage.py test
테스트를 실행한 후 오류를 수정하십시오. 릴리스 노트를 새로이 마음에 두고 있지만 사용 중인 코드를 리팩터링하여 더 이상 사용하지 않도록 함으로써 Django의 새로운 기능을 활용할 수도 있습니다.
배치¶
당신의 앱이 새로운 버전의 Django와 잘 작동한다고 확신하면, 당신은 당신의 업그레이드된 Django 프로젝트를 진행할 준비가 되어 있습니다.
Django에서 제공하는 캐시를 사용하는 경우 업그레이드 후 캐시 지우기를 고려해야 합니다. 그렇지 않으면 예를 들어 절인 개체를 캐싱하는 경우 문제가 발생할 수 있습니다. 이러한 개체는 Django 버전에서 피클 호환이 보장되지 않기 때문입니다. 과거 비호환성의 인스턴스는 caching peilt:class였습니다.’~django.the’ 입니다.HttpResponse’ 객체는 :func:’~django를 통해 직접 또는 간접적으로 생성됩니다.inviews.incache.cache_page’ decorator입니다.