대규모 django 프로젝트를 위한 프로젝트 디자인 / FS 레이아웃 [닫기]

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

  •  09-06-2019
  •  | 
  •  

문제

대규모 django 프로젝트를 레이아웃하는 가장 좋은 방법은 무엇입니까?튜토리얼은 앱, 모델 및 보기 설정에 대한 간단한 지침을 제공하지만 앱과 프로젝트를 어떻게 분류해야 하는지, 일반적인 프로젝트에서 앱 간에 허용/필요한 공유 정도에 대한 정보는 적습니다(분명히 이는 크게 의존적입니다). 프로젝트) 및 일반 템플릿을 보관하는 방법/위치.

누구든지 예, 제안 및 설명 특정 프로젝트 레이아웃이 다른 프로젝트 레이아웃보다 나은 이유는 무엇입니까?나는 특히 많은 수의 단위 테스트(실제 코드 베이스 크기의 2-5배)와 문자열 외부화/템플릿을 통합하는 데 관심이 있습니다.

도움이 되었습니까?

해결책

주요 지침은 다른 대규모 코드 프로젝트와 유사합니다.앱은 명확하게 정의된 단일 책임을 다루어야 합니다."응용 프로그램"이라는 이름은 잘못된 이름입니다.Django 앱은 실제 애플리케이션을 만들기 위해 서로 연결될 수 있는 재사용 가능한 구성 요소로 더 많이 생각되어야 합니다.각 앱에 대한 테스트는 해당 앱 내에 포함되어야 합니다.앱은 가능한 한 서로 분리되어야 하지만 종속성이 분명히 존재하므로 종속성 그래프를 최대한 단순하고 온전하게 유지하는 것이 목표입니다.

저는 프로젝트에 대한 모든 템플릿을 각 앱에 대한 하위 디렉터리가 있는 단일 프로젝트 전체 템플릿 디렉터리 아래에 보관하는 것을 선호합니다(각 앱에 대한 템플릿 하위 디렉터리를 사용하는 것은 Django에서 앱 간의 템플릿 이름 충돌을 방지하기 때문에 매우 강력한 규칙입니다). .단일 프로젝트 전체 템플릿 디렉토리가 있는 이유는 템플릿, 템플릿 상속 트리 및 블록 이름이 상당히 프로젝트별로 다를 수 있으므로 모든 프로젝트에 연결할 수 있는 "기본" 앱 템플릿을 제공하기 어렵기 때문입니다.기본 사이트 전체 템플릿과 그들이 정의하는 블록에 대한 표준 명명 규칙을 정하려는 시도가 있었지만 아직 표준이 등장하는 것을 보지 못했습니다. 피낙스 아마도 우리가 가지고 있는 표준에 가장 가까운 것일 것입니다).

"문자열 외부화"에 대해, i18n과 l10n을 의미한다면 Django는 이에 대한 강력한 지원과 .po 파일을 저장하는 표준 위치를 가지고 있습니다. 문서.

다른 팁

나는 Zachary의 레이아웃이 매우 유용하다고 생각했습니다.Zachary Voase의 블로그 » Django 프로젝트 규칙, 재검토.

이 페이지는 내 질문 중 일부를 해결하는 데 도움이 됩니다. http://www.b-list.org/weblog/2006/sep/10/django-tips-laying-out-application/

구체적으로:

  1. 사용자 정의 템플릿 태그 또는 필터를 정의하려면 애플리케이션 디렉터리에 templatetags라는 하위 디렉터리를 만들어야 하며, Python 모듈로 가져올 수 있도록 __init__.py라는 파일이 포함되어 있어야 합니다.
  2. Django의 테스트 프레임워크에서 자동으로 인식할 단위 테스트를 정의하려면 이를 테스트라는 모듈(tests.py라는 파일 또는 테스트라는 디렉터리일 수 있음)에 넣습니다.테스트 프레임워크는 해당 모듈에서 모든 Doctest를 찾을 수도 있지만, 물론 테스트하도록 설계된 클래스나 함수의 Docstring이 선호됩니다.
  3. 애플리케이션 설치 후 즉시 실행될 사용자 정의 SQL을 제공하려면 애플리케이션 디렉터리 내에 sql이라는 하위 디렉터리를 만듭니다.파일 이름은 작업할 테이블의 모델 이름과 동일해야 합니다.예를 들어, Entry라는 모델을 포함하는 weblog라는 앱이 있는 경우 앱 디렉터리 내의 sql/entry.sql 파일을 사용하여 항목 테이블이 생성되는 즉시 항목 테이블에 데이터를 수정하거나 삽입할 수 있습니다.

Tests.py 및 테스트(디렉토리)에 대한 참고 사항은 모델에도 적용되며, 이는 하나의 파일에 대해 많은 테스트(또는 모델)가 필요한 문제를 해결하는 데 도움이 됩니다.

나는 여전히 앱/프로젝트에 대한 몇 가지 예/제안이 무너지고 잘 작동하는 대규모 django 사이트를 보고 싶습니다.

그만큼 피낙스 프로젝트 프로젝트에 쉽게 통합할 수 있는 재사용 가능한 작은 앱이라는 아이디어를 바탕으로 구축되었습니다.그들은 프로젝트를 사용했습니다 클라우드 27 데모 프로젝트로.

제가 작업 중인 Django 프로젝트(Basie라고 합니다.0.1 이전 버전이므로 아직 링크가 없습니다.)는 Pinax 모델을 따르려고 노력하고 있으며 지금까지는 상당히 잘 작동하고 있습니다.

내 현재 레이아웃은 내 사이트의 테스트 버전을 원하기 때문에 발생합니다.이는 서로 다른 구성이 필요하기 때문에 모든 사이트에 대해 두 개의 프로젝트가 있다는 것을 의미하며 모든 응용 프로그램을 프로젝트 밖으로 이동해야 합니다.

저는 두 개의 폴더를 만들었습니다.$APP_ROOT/devel 및 $APP_ROOT/prod.여기에는 모든 앱이 포함되어 있습니다.소스 제어(내 경우에는 git)를 사용하여 HEAD 개정판에 앱을 개발하고 prod에 있는 앱은 PROD 태그에 고정합니다.템플릿에는 앱과 동일한 레이아웃을 가진 자체 폴더도 있습니다.

이제 devel-apps 폴더와 일치하는 템플릿 폴더에서 모든 개발을 수행할 수 있습니다.만족스러운 것이 있으면 해당 개정판에 태그를 지정하고 prod를 업데이트합니다.

나는 정말 좋아한다 랜달 데그스' 이 주제에 대해 게시하십시오.그는 설정 파일을 서로 붙이는 방법에 대한 정보를 생략했지만 이에 대한 게시물을 게시할 예정이므로 링크할 수 있지만 지금은 누구나 확인할 수 있습니다. 내 레포 여기에 Readme에 몇 가지 지침이 포함되어 있습니다.

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