codememo

장고에서 언제 새로운 앱(시작 앱 포함)을 만들 수 있습니까?

tipmemo 2023. 7. 22. 10:05
반응형

장고에서 언제 새로운 앱(시작 앱 포함)을 만들 수 있습니까?

저는 이것에 대해 검색해봤지만, 여전히 장고가 "앱"이라고 정의하는 것과 관련하여 문제가 있습니다.

사이트가 메인 프로젝트의 모델을 사용하더라도 사이트의 각 기능에 대해 새 앱을 만들어야 합니까?

언제 새로운 앱을 분리해야 하는지, 언제 "메인 프로젝트" 또는 다른 앱과 함께 기능을 유지해야 하는지에 대한 올바른 경험 규칙이 있습니까?

James Bennett은 장고에서 재사용 가능한 앱을 구성하는 방법에 대한 멋진 슬라이드 세트를 가지고 있습니다.

저는 장고 애플리케이션을 "애플리케이션"보다는 재사용 가능한 모듈 또는 구성요소로 생각하는 것을 선호합니다.

이를 통해 특정 기능을 서로 캡슐화하고 분리하는 데 도움이 되며, 특정 "앱"을 커뮤니티 전체와 공유하기로 결정했을 때 재사용 가능성과 유지보수성을 개선할 수 있습니다.

저의 일반적인 접근 방식은 특정 기능 또는 기능 세트를 "앱"에 버킷업하여 공개하는 것입니다.여기서 어려운 부분은 각각의 양동이가 얼마나 큰지 알아내는 것입니다.

제가 사용하는 좋은 트릭은 앱이 공개적으로 공개되면 어떻게 사용될지 상상하는 것입니다.이를 통해 버킷을 축소하고 "목적"을 보다 명확하게 정의할 수 있습니다.

다음은 2008년 9월 6일에 업데이트된 프레젠테이션입니다.

DjangoCon 2008: 재사용 가능한 앱 @7:53

슬라이드: Reuseable_apps.pdf

슬라이드에서 발췌한 내용

이것이 자체 응용 프로그램이어야 합니까?

  • 앱의 포커스와 전혀 관련이 없는 건가요?
  • 제가 하는 일과 직교하는 건가요?
  • 다른 사이트에서도 비슷한 기능이 필요합니까?

만약 그들 중에 "네"라면?그렇다면 별도의 애플리케이션으로 분할하는 것이 가장 좋습니다.

논리적으로 분리된 각 모델 집합에 대해 새로운 응용 프로그램을 만드는 경향이 있습니다. 예를 들어, 다음과 같습니다.

  • 사용자 프로필
  • 포럼 게시물
  • 블로그 게시물

웹에서 찾은 이 질문에 대한 두 가지 최고의 대답은 다음과 같습니다.

  1. 재사용 가능한 앱 토크(슬라이드)(비디오)는 다른 답변에서도 언급되었습니다.저자이자 장고 기여자인 Bennett은 다른 사람들이 사용할 수 있도록 정기적으로 앱을 게시하고 많은 작은 앱에 대해 강력한 관점을 가지고 있습니다.
  2. 스케일에서 Django를 위한 Doordash의 팁은 반대의 조언을 제공하며 그들의 경우 많은 별도의 앱으로 시작한 후 하나의 앱으로 마이그레이션했다고 말합니다.앱 간 마이그레이션 종속성 그래프에 문제가 발생했습니다.

두 소스 모두 다음과 같은 상황에서 별도의 앱을 만들어야 한다는 데 동의합니다.

  • 다른 Django 프로젝트에서 앱을 재사용할 계획인 경우(특히 다른 사용자가 재사용할 수 있도록 게시할 계획인 경우).
  • 앱과 다른 앱 간의 종속성이 거의 없거나 전혀 없는 경우.여기서 당신은 미래에 앱이 자체 마이크로 서비스로 실행되는 것을 상상할 수 있을 것입니다.

제가 따르는 규칙은 다른 프로젝트에서 기능을 재사용하려면 새 앱이어야 한다는 것입니다.

프로젝트의 모델에 대한 깊은 이해가 필요한 경우 모델과 함께 사용하는 것이 더 적합할 수 있습니다.

이 질문에 대한 최고의 대답은 Andrew Godwin(장고 핵심 개발자)입니다.

앱의 주요 목적은 재사용 가능한 구성 요소, 특히 모델/admin/ 등을 위한 1등급 네임스페이스의 논리적 분리를 제공하고, "켜기" 또는 "끄기" 쉬운 방법을 제공하는 것입니다.

어떤 면에서, 그것은 장고가 만들어졌을 때의 유물입니다 - Python 패키지와 모듈이 훨씬 덜 개발되었고 기본적으로 문제에 대한 독자적인 해결책이 있어야 했던 때입니다.그렇긴 하지만, 그것은 여전히 장고의 정신적 모델의 핵심 부분이고, 나는 설치되었다고 생각합니다.APPS는 여전히 Python의 엔트리 포인트 대체 제품보다 더 깨끗하고 쉬운 솔루션입니다(환경에 설치되어 있지만 사용하지 않으려는 패키지를 비활성화하는 것이 매우 어렵습니다).

오늘 특별히 앱 컨셉에서 분리될 수 있다고 생각하는 것이 있습니까?모델과 관리자는 자동 검색과 고유한 네임스페이스 접두사를 위해 이 기능이 필요하므로 이 기능을 취소하기가 어렵고, 필요한 다른 기능을 생각하느라 애를 먹고 있습니다(실제로, 원하는 것이 라이브러리뿐이라면 일반 Python one으로 만들 수 있습니다. 모델, 템플릿 또는 관리 코드 IIRC를 발송하지 않는 한 앱 래핑이 필요하지 않습니다.

'앱'은 다양한 것들이 될 수 있습니다. 모든 것은 맛에 달려 있습니다.예를 들어, 블로그를 만들고 있다고 가정해 보겠습니다.당신의 앱은 블로그 전체일 수도 있고, 'admin' 앱, 모든 공개 보기를 위한 'site' 앱, 'rss' 앱, 개발자들이 그들만의 방식으로 블로그와 인터페이스할 수 있는 'services' 앱 등을 가질 수도 있습니다.

저는 개인적으로 블로그 자체를 앱으로 만들고 그 안의 기능을 분리할 것입니다.그러면 블로그는 다른 웹 사이트에서 쉽게 재사용될 수 있습니다.

Django의 좋은 점은 디렉토리 트리의 모든 레벨에 있는 모든 models.py 파일을 Django 모델이 포함된 파일로 인식한다는 것입니다.따라서 여러분의 기능을 '앱' 내의 작은 '하위 앱'으로 나누는 것 자체가 더 어려운 일을 만들지는 않을 것입니다.

언급URL : https://stackoverflow.com/questions/64237/when-to-create-a-new-app-with-startapp-in-django

반응형