Django 앱(App)

MoonLight·2021년 7월 27일
0

django

목록 보기
3/20
post-thumbnail

Django 앱(App)


I. Django Project vs Django App

기능(APP) 하나하나를 구현하여 합친 것이 프로젝트(Project)이다.
즉, Django App ⊂ Django Project 이다.

II. Django 앱 생성

  • Django 앱 생성하기
### django 앱 생성
python manage.py startapp {앱 이름}
  • Django 앱 구조

    • 아래는 Costaurant project내에 python manage.py startapp foods 명령어를 통하여 foods라는 이름의 django app을 생성한 후의 모습이다.
    1. __init__.py : __init__.py파일이 있는 디렉토리를 파이썬 패키지로 인식하기 위해서 필요
    2. admin.py : 각각의 앱을 django 관리자 기능과 연동하거나 관리자 기능에 대한 설정을하기 위해 필요한 설정파일
    3. apps.py : 각각의 App마다 추가적인 기능 및 설정을 넣어 두는 파일
    4. models.py : django app에서 사용할 데이터 모델 정의 및 데이터베이스 연동과 관련된 파일
    5. tests.py : 앱에 대한 테스트 코드를 작성하는 파일이다. 테스트는 말 그대로 Django 프로젝트의 모든 기능이 의도한 대로 잘 동작하는지 체크하는 것을 말한다. 그리고 이런 테스트는 작은 함수 하나를 체크하는 테스트부터 여러 함수의 상호작용이 있는 전반적인 큰 로직을 테스트하는 것까지 다양한 크기의 테스트가 있다. 그렇기 때문에 프로젝트를 모두 완성한 다음 테스트를 준비하는 것이 아니라 앱 별로 작은 단위의 자동화된 테스트를 미리 만들어서 프로젝트 전체에 대한 테스트가 효율적으로 이루어질 수 있도록 작성하는 것이 좋다.
    6. views.py : django app의 어떤 기능을 할 지에 대한 메인 로직 처리와 관련된 파일
    7. migrations 디렉토리 : 데이터베이스의 변경 사항 히스토리 누적 (Django 앱의 데이터 구조에 대한 변경 사항인 migration 파일이 저장되는 디렉토리)

  • 프로젝트 디렉토리의 settings.py 파일에서 INSTALLED_APPS 리스트에 app을 추가해주어야 한다. 아래는 foods라는 앱의 이름을 리스트에 추가해준 모습이다.

INSTALLED_APPS는 현재 프로젝트를 구성하고 있는 APP의 목록이다. 추가해준 앱 foods 말고도 여러 앱들이 있는데 이들은 기본적으로 django가 이 앱들을 만들어서 넣어놓은 것이다.


III. Reusable App

  • 앱은 하나의 기능단위이기 때문에 꼭 하나의 프로젝트에만 들어갈 수 있는 것이 아니라, 한번 만들어 놓으면 다른 새로운 프로젝트에도 동일한 앱들을 재사용할 수가 있다. 기본적으로 reusable app을 잘 만드는 것이 django의 철학이다.
    • e.g. 하나의 커뮤니티 사이트를 구축했을 때, 회원가입/로그인/글쓰기/좋아요 등의 app들을 기능단위로(독립적으로) 잘 만들어 놓았다면, 다른 커뮤니티 사이트를 만들어야 할 때 그 커뮤니티에 맞게끔 살짝만 수정한다면 그 app들을 거의 동일하게 사용할 수가 있다.
    • 따라서, 다른 개발자들이 만든 app들도 사용할 수도 있다.
  • 이렇게 이미 만들어 놓은 app들을 재사용할 시, 매우 효율적인 개발이 가능하다.
  • But, 모든 app들이 reusable한 app인 것은 아니다. 여러 프로젝트에서 사용할 수 있게끔 만들어진 app이 reusable app인데 이러한 app을 초보자가 처음부터 만드는 것은 쉽지않으므로, 숙달이 필요하다.
    • 세계적인 Django 컨퍼런스 DjangoCon에서 이러한 reusable한 app을 만들기 위한 나름의 guideLine을 제시해두었다.
      1. 한가지 앱한가지 기능을 하고, 그 기능을 잘 수행해야 한다.
      2. 장고 개발자는 프로젝트를 많은 앱들로 구성하는 것을 두려워하면 안된다.
      3. 각각의 앱을 유연하게 작성해야 한다.
      4. 다른 사람에게 배포가 가능하도록 만들어야 한다.
profile
hello world :)

0개의 댓글