FrontEnd
Javascript
Diary
ML
CS
Django
Algorithm
AWS
Co-Work
HTML
CSS
Python
React
ReactNative

Django App 디자인 기본

💬 용어정리

  • 장고 프로젝트 : 장고 웹 프레임워크를 기반으로 한 웹 애플리케이션
  • 장고 앱 : 프로젝트의 한 기능을 표현하기 위해 디자인된 작은 라이브러리 프로젝트는 다수의 앱으로 구성 때로 외부 장고 패키지를 지칭하기도 한다
  • INSTALLEDAPPS : 프로젝트에서 이용하려고 INSTALLEDAPPS 세팅에 설정한 장고앱
  • 서드파티 장고패키지 : 파이썬 패키지 도구에 의해 패키지화된, 재사용 가능한 플러그인 형태로 이용가능한 장고앱

“좋은 장고앱을 정의하고 개발하는 것은 더글라스 맥얼로이의 유닉스 철학을 따르는 것

‘한번에 한가지 일을 하고 그 한가지일을 매우 충실히 하는 프로그램’ ” -제임스베넷

💬 앱 생성의 권장사항

  • ✔ 한가지 기능에 특화된 앱을 만들어야 한다
  • ✔ 앱의 확장이 아닌 앱의 분리를 통해서 복잡하게 로직이 얽히는 것을 막는게 중요하다 크기는 최대한 작게 하는 것이 좋다
  • ✔ 앱의 이름은 가능한한 한단어로 된 명료한 이름을 사용하자
  • ✔ 좀더 일반적인 규칙을 들자면 앱이름은 앱의 중심이 되는 모델의 복수형태가 되어야하는데 다양한 예외가 존재한다 (앱의 성격이 복수의 의미를 나타내는 것이 아니라면 그냥 단수를 쓰도록 하자)
  • ✔ 더 중요한것은 사이트의 URL과 어떤방식으로 직관적으로 매칭시킬것인지를 고려하는게 중요하다
  • ✔ PEP8규약에 맞게 임포트 될수있는 이름을 이용하도록 하자 -, . , 공백 등의 특수문자를 제외하고 단어 사이는 _로 연결하여 나타내도록 하자
  • ✔ 앱 디자인을 너무 고민하지 말자 항상 유지보수가 동반되는 일이다

💬 비공통 모듈(앱레벨에 적용)

  • behaviours.py : 모델 믹스인 위치에 대한 옵션
  • constants.py : 앱 레벨에서 이용되는 세팅을 저장하는 장소의 이름
  • decorators.py : 데코레이터가 존재하는곳
  • db/ : 여러 프로젝트에서 이용되는 커스텀 모델이나 컴포넌트
  • field.py : 폼 필드 이용에 쓰인다.
  • factories.py: 테스트 데이터 펙터리 파일
  • helpers.py : 헬퍼함수, 뷰와 모델을 가볍게 하기위해 뷰와 모델에서 추출한 코드를 저장utils.py 와 비슷한 기능을 한다
  • manager.py : model.py가 너무 커질경우 일반적인 해결책으로 커스텀 모델매니저가 이동되는곳
  • signales.py : 커스텀 시그널을 제공하는 것에 대안으로 커스텀 시그널을 넣기에 유용한 공간
  • utils.py : helpers.py와 같은 기능
  • viewmixins.py: 뷰 믹스인을 이 모듈로 이전함으로써 뷰 모듈과 패키지를 더 가볍게