[Django] Create App

오제욱·2023년 7월 26일
1
post-thumbnail

1. 앱 생성

Django 프로젝트는 앱 단위로 나누어 프로젝트를 관리한다.
보통 기능별로 분리하여 앱을 생성 하게 된다.
Django의 앱은 모두 각각의 모델(Model), 뷰(View), 템플릿(Template), URL 매핑 시스템을 가지고 있기 때문에 앱 별로 모둘화하여 프로젝트를 효율적으로 관리, 유지 보수 하고 다른 프로젝트에 사용하기에도 용이하다.
앱을 생성 할때는 터미널에 다음과 같은 명령어를 입력 하면 된다.

사용법 : python manage.py startapp 앱이름

python manage.py start app users

위와 같은 명령어로 Django의 새로운 앱을 생성 할 수 있다.
앱 이름 부분은 사용할 앱의 이름을 입력하면 된다.
설정하게 되는 이름은 해당 프로젝트의 다른 앱과 이름이 겹치면 안된다.

2. settings.py 에 앱 추가

Django 앱을 생성하게 되면 settings.py의 INSTALLED_APPS 부분에 다음과 같이 생성한 앱을 추가해야 한다.

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
	'users', # 추가 한 앱
]

해당 부분에 생성한 앱을 추가해야만 Django 프로젝트에 정상적으로 적용 할 수 있게 된다.

3. 앱 구조

Django 앱을 생성하게 되면 다음과 생성한 앱 이름의 폴더 안에 다음과 같은 파일들이 생성된다.

  • migrations(폴더)
  • __init__.py
  • admin.py
  • apps.py
  • models.py
  • test.py
  • views.py

3.1 migrations (폴더)

migrations 폴더는 models.py 에서 설정한 모델의 변경사항들이 들어가는 폴더이다.
models.py에서 새로운 모델을 정의하거나 모델을 수정하게 되면
makemigrations 명령어를 통해 변경사항을 감지하여 migrations 폴더안에 migration 파일을 생성한다.
이후 migrate 명령어로 적용되지 않은 migrations 들을 적용시킨다.

3.2 __init__.py

이 폴더를 패키지처럼 다루라고 알려주는 용도의 단순한 빈 파일이다.
파이썬 3.3 버전 이상 부터는 해당 파일이 없어도 패키지로 인식한다.
하지만 하위 버전 호환을 위해 해당 파일을 생성해 두는게 안전하다.

3.3 admin.py

Django에서는 관리자 기능을 제공한다.
관리자 페이지에서 보여지는 부분의 설정이나 커스텀을 하기위해 사용하는 파일이다.
관리자 페이지의 기능은 Django 에서 기본으로 제공해 주기 때문에 유용한 기능이다.

3.4 apps.py

앱의 설정을 관리하는 부분이다.
어플리케이션 메인파일이라고 볼 수 있다.

3.5 models.py

장고에서 데이터모델을 만들어주는 역할을 하는 파일이다.

해당 파일안에 클래스 형식으로 데이터 모델을 만들어주면 Django가 ORM을 통해 데이터베이스에 데이터 모델을 생성해 준다.

3.6 test.py

Django 프로젝트의 단위 테스트를 위해 필요한 파일이다.

해당 파일안에 테스트케이스를 작성하고 명령어를 통해 전체 앱 또는 특정 앱의 test.py의 테스트케이스를 불러와 테스트 하게 된다.

3.7 views.py

views.py는 html파일이 화면에 어떻게 보일지를 설정한다.

views.py는 들어오는 요청 url을 파싱하여 라우팅 처리된 특정 요청을 처리하는 공간이다.


위와 같이 기본적으로 생성되는 파일외에 urls.py와 같이 프로젝트를 만들면서 필요하게 되는 파일들은 생성하면서 프로젝트를 만들게 된다.

4. REUSABLE APP

재사용성이 있는 앱, 여러 프로젝트에서 활용할 수 있게 만들어진 app이다.

  • 한 가지 앱은 한 가지 기능을 하고, 그 기능을  수행해야 한다.
  • 장고 개발자는 프로젝트를 많은 앱으로 구성하는 것을 두려워하면 안 된다.
  • 각각의 앱을 유연하게 작성해야 한다.
  • 다른 사람에게 배포가 가능하도록 만들어야 한다

위와 같은 개념을 가지고 재사용가능한 앱을 만들어야 한다.

APP은 하나의 기능 단위로 나누어 만드는게 좋지만 처음부터 그렇게 나누는 것은 쉽지 않다.

profile
Django Python 개발자

1개의 댓글

comment-user-thumbnail
2023년 7월 26일

좋은 글이네요. 공유해주셔서 감사합니다.

답글 달기