Django 0.96에서 1.0에서 업그레이드하는 가장 좋은 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/128466

  •  02-07-2019
  •  | 
  •  

문제

실제로 기존 앱을 업그레이드하거나 주로 처음부터 다시 작성하여 할 수있는 조각 (템플릿 등)을 저장해야합니까?

도움이 되었습니까?

해결책

이것은 당신이하고있는 일에 달려 있지만 대부분의 응용 프로그램은 업그레이드 한 다음 깨지는 모든 것을 해결할 수 있어야합니다. 내 경험상 업그레이드 후 고쳐야 할 주요 사항은

  1. 외국 키를 따르는 구문과 같은 모델로 펑키 한 것들 중 일부가 변경됩니다.

  2. 작은 템플릿 세트, 특히 자동 에스케이프가 변경됩니다.

  3. Django의 내부의 특정 구조에 의존하는 모든 것. Django Internals를 동적으로 수정하여 프로젝트에 필요한/편리한 방식으로 행동을 바꾸는 것과 같은 일을하지 않는 한 문제가되지 않아야합니다.

요약하면, 당신이 정말로 이상하고/또는 복잡한 일을 많이하지 않는 한, 간단한 업그레이드는 비교적 고통이 없어야하며 몇 가지 변경 만 필요합니다.

다른 팁

업그레이드. 나를 위해 그것은 매우 간단했다 : 변화 __str__() 에게 __unicode__(), 기본을 작성하십시오 admin.py, 그리고 끝났습니다. 1.0에서 앱 실행을 시작하고 테스트하고 오류가 발생하면 문서를 사용하십시오. 뒤로 호환되지 않는 변경 문제를 해결하는 방법을 확인합니다.

앱을 업그레이드하기 만하면됩니다. 0.96에서 1.0의 스위치는 거대했지만 뒤로 호환되지 않는 변화와 관련하여 앱에 10%가 있다고 의심합니다.

나는 Django 1.0 이전에 트렁크에 있었기 때문에 나는 시간이 지남에 따라 전환이 있었지만 그때까지도 내가 바꿔야 할 유일한 것은 Newforms, Newforms-Admin,였습니다. 스트리트() 에게 유니 코드() 및 maxlength에서 max_length에서

다른 변경의 대부분은 새로운 기능이나 백엔드 재 작성 또는 기본 웹 사이트를 구축 한 사람으로서 가까이 가지 않았던 것들이었습니다.

가장 간단한 사이트 만 업그레이드하기 쉽습니다.

사이트가 발생하면 진정한 고통을 기대하십시오. 비 ASCII 세계의 일부 (읽기 : 미국 및 영국 이외의 곳). Django의 가장 고통스러운 변화는 바인드 스트링에서 내부적으로 유니 코드 객체로 전환하는 것이 었습니다. 이제 바인드 스트링을 사용하는 모든 장소를 찾아서 유니 코드로 변경해야합니다. 최악의 경우는 템플릿 렌더링입니다. UnicodeError를 얻을 때까지 하나의 변수를 변경하는 것을 잊지 못할 것입니다.

다른 주목할만한 것 : 조작기 (구식) 사라졌고 양식으로 모든 부품을 다시 작성하는 것 외에는 다른 방법이 없습니다 (NewForms).

이것이 귀하의 경우이고 프로젝트가 2-3 앱보다 크면 실제로 필요할 때까지 업그레이드하는 것을 꺼려합니다.

우리는 멀티 스텝 프로세스로 업그레이드했고 나는 그것에 매우 만족합니다. 문제의 응용 프로그램은 약 100.000 LOC였으며 레거시 시스템과의 인터페이스와 함께 여러 핵심 비즈니스 기능을 실행했습니다. 우리는 그렇게 일했습니다.

  1. Django 0.97 포스트 유니 코드 병합 업데이트. 모든 유니 코드 문제를 수정하십시오
  2. 응용 프로그램을 재사용 가능한 앱으로 리팩토링하고 테스트를 추가하십시오. 메인 애플리케이션/프로젝트에 40.000 LOC를 남겼습니다.
  3. Django 0.97-Post AutoExcape Merge로 업그레이드하십시오. 3에서 생성 된 재사용 가능한 앱에서 자동 탈출구를 수정 한 다음 Mian 응용 프로그램에서 나머지 자동 에스케이프 문제를 수정하십시오.
  4. 1.0으로 업그레이드. 남은 것은 대부분 관리자 물건을 고치는 것이 었습니다.

모든 것이 약 6 개월이 걸렸으며, 다른 지점을 1.0으로 포팅하면서 서버에서 레거시 프로덕션 브랜치를 실행하는 곳에서 약 6 개월이 걸렸습니다. 그렇게하는 동안 우리는 또한 생산 지점에 기능을 추가하는 곳입니다.

최종 병합은 예상보다 훨씬 덜 지저분했으며 4 명의 코더가 병합, 검토, 테스트 및 고정에 약 일주일이 걸렸습니다. 그런 다음 우리는 출시되었고, 약 일주일 동안 이전에 예상치 못한 버그에 물렸다.

결국 나는 결과에 매우 만족합니다. 우리는 이제 추가 개발을 위해 훨씬 더 나은 코드베이스를 가지고 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top