달나라 노트

Python django project 1 - 게시판 만들기 ch.3 : app 구성 본문

Python django/Python django project 1

Python django project 1 - 게시판 만들기 ch.3 : app 구성

CosmosProject 2020. 12. 12. 23:39
728x90
반응형

 

 

 

일단 게시판을 만들기 위해 필요한 app들을 만들어보겠습니다.

 

필요한 app이 뭐가 있을지 살펴보면 다음과 같습니다.

1. user관련 앱 -> 유저의 회원가입, 로그인 등의 내용이 담김

2. 게시판 관련 앱 -> 게시판이나 게시글 작성 등의 내용이 담김

3. tag 관련 앱 -> 게시글을 작성하면 글과 관련된 키워드를 담은 tag를 생성하곤하죠? 이러한 tag관련 내용이 담긴 tag app을 생성합니다.

 

따라서 우리는 3개의 app이 필요합니다.

 

지난번에 app이라는 directory를 생성했습니다.

이 directory에 django-app을 만들어봅시다.

 

 

1. app directory로 이동.

 

 

django_web % cd pro/app

cd 명령어를 이용해서 terminal상에서 app directory로 이동해줍니다.

 

 

 

 

2. app 생성

app % django-admin startapp user
app % django-admin startapp post
app % django-admin startapp tag

django-admin의 startapp 명령어는 app과 app 구성에 필요한 기본적인 파일들을 자동으로 생성해줍니다.

user, post, tag는 생성할 app의 이름입니다. (따라서 원하는 이름으로 변경해도 됩니다.)

user는 사용자 관련 내용을 담을 app이며, post는 게시글 관련 내용을 담을 app이고, tag는 tag관련 정보를 담을 app입니다.

 

 

 

그러면 위 이미지처럼 app directory 안에 post와 user라는 directory가 생깁니다.

이것을 app이라고 하고, 그 안에 여러 가지 파일들이 생기게됩니다.

그래서 우리는 저러한 파일들에 코드를 작성하여 개발을 하게됩니다.

 

한번 보면 models.py, views.py라는 파일이 보이시죠.

이전 챕터에서 얘기했던 MTV에서 Model, View관련 코드가 들어갈 파일입니다.

 

근데 template 파일은 안보이네요?

template은 html 파일인데 이 html파일을 모아두는 directory를 생성해줍시다.

 

 

 

3. Templates directory 생성

 

 

위처럼 모든 app에 templates라는 이름의 directory를 생성해줍시다.

 

 

 

여기까지 해서 app의 생성은 끝났습니다.

근데 저희가 생성한 app(user, post, tag)의 존재를 django는 아직 알지 못합니다.

왜냐하면 아직 저희가 이러한 앱들이 있다는걸 django에게 알려주지 않았거든요.

 

저희가 생성한 app들을 등록하기 위해 크게 2가지 절차가 필요합니다.

 

- settings.py에 app 등록

 

 

제가 생성한 app들의 존재를 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',
]

 

여기에 아래처럼 우리가 생성한 app을 적어주면 됩니다.

 

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app.user',
    'app.post',
    'app.tag'
]

여기서 user가 아니라 app.user라고 적은 이유는 가장 상단의 pro라는 프로젝트 디렉토리를 기준으로 app이 있는 곳이 다음과 같기 때문입니다.

pro/app/user/
pro/app/post/
pro/app/tag/

따라서 app디렉토리 안에 user라는 app이 있다라는 뜻을 알려주기 위해 app.user라고 적어줬습니다.

 

 

 

 

- apps.py 파일 수정

 

두 번째로 생성한 app들의 directory를 보시면 apps.py라는 파일이 있습니다.

 

 

이 파일을 열어보시면 아래와 같을 겁니다.

여기서 name이라는 변수가 보이시나요?

name = 'user' 라고 적혀있습니다.

user라고 적혀있는 것은 제가 생성한 app의 이름을 user라고 했기 때문에 저렇게 적혀있는 것입니다.

 

근데 저렇게만하면 오류가 발생할 수 있습니다.

 

저희가 settings.py에 app을 등록할 때에는 app.user 등의 형식으로 app이라는 디렉토리 안에 user라는 app이 있다 라고 명시했습니다.

apps.py에도 현재 app의 위치가 위처럼 정확한 경로로 적혀있어야 합니다.

따라서 project를 어떻게 구성하냐에 따라 위 값은 다를 수 있습니다.

 

 

저는 위처럼 pro 라는 프로젝트 디렉토리에 app이라는 이름의 app만을 모아두는 디렉토리가 있으며

app 디렉토리 안에 user라는 app이 있습니다.

따라서 프로젝트 디렉토리는 생략하고 프로젝트 아래에 app/user 이렇게 구성이 되어있는 것이죠.

 

 

그에 따라 apps.py에 있는 name 변수의 값도 app.user로 적혀있어야 합니다.

 

다른 app의 apps.py 파일의 이름도 위처럼 수정되어야 합니다.

 

 

 

 

 

 

여기까지 하면 app의 구성은 끝났습니다.

 

 

이제 다음 챕터부터 본격적인 코드를 작성해볼텐데, django는 MTV 구조를 가지고 있기 때문에 Model, Template, View 코드를 모두 각각 작성해야 합니다.

셋 중 어느걸 먼저하는지는 결과적으론 큰 상관이 없습니다만, 저는 MTV 구조 이름 그대로 Model -> Template -> View의 순서로 코드를 구성해보겠습니다.

따라서 다음 챕터에선 user app의 model을 구성해봅시다.

 

 

 

728x90
반응형
Comments