Django 프로젝트와 앱 생성

상훈·2022년 4월 16일
1

Django 가상 환경 설정 및 패키지 설정

지난 자료에서 장고를 사용하기 전에 파이썬 가상 환경 생성 및 활성화와 여러가지 패키지들을 설치해보았습니다.

아직 지난 자료를 보지 못하신 분들은 이곳을 참고해주세요.

이번에는 Django에서 첫 번째 프로젝트와 앱을 생성하고 이를 사용하기 위한 설정들을 가볍게 살펴보겠습니다.

1. Django 프로젝트 생성

django에서 개발을 진행하기 위해 가장 먼저 할 일은 django에 우리의 프로젝트를 생성하는 것입니다.

프로젝트 생성 시 이름에는 되도록 python이나 django에서 사용중인 키워드를 피해서 만드는 것을 권장합니다. 또한 '-'(하이픈)도 사용할 수 없습니다.

아래와 같은 이름들은 사용할 수 없거나 사용하지 않도록 권장하는 예시입니다.

  • Django
  • text
  • class
  • django-test 등

자 그렇다면 이 이름들을 피해 장고 프로젝트를 생성해보도록 하겠습니다.

django-admin startproject firstpjt .

여기서 fisrtpjt가 우리가 생성할 프로젝트의 이름입니다. 프로젝트 이름 뒤에 공백+.을 찍어주는 이유는 현재 폴더에 프로젝트를 생성한다는 의미입니다. 만약 .을 찍어주지 않는다면 프로젝트 폴더가 생긴 후 그 안에 여러가지 파일과 폴더들이 생성되게 됩니다.

현재 폴더에 위와 같이 프로젝트 폴더와 manage.py가 생성된다면 성공적으로 django의 프로젝트가 생성되었습니다. (manage.py 는 앞으로 우리의 django 사용에 있어서 수많은 일을 처리해줄 우리의 충직한 노예입니다.)

firstpjt에 생성된 파일들을 하나씩 살펴보도록 하겠습니다.

위와 같이 프로젝트 생성 시 파이썬 파일들이 만들어지는 것을 볼 수 있습니다.

  • __init__.py
    • Python에게 이 디렉토리를 하나의 Python 패키지로 다루도록 지시하는 역할을 수행합니다.
  • asgi.py
    • Asynchronous Server Gateway Interface의 약자
    • Django 애플리케이션이 비동기식 웹 서버와 연결 및 소통하는 것을 돕습니다.
  • settings.py
    • 애플리케이션의 모든 설정을 포함하고 있습니다.
  • urls.py
    • 사이트의 url과 적절한 views의 연결을 지정합니다.
  • wsgi.py
    • Web Server Gatewy Interface
    • django 애플리케이션이 웹서봐 연결 및 소통하는 것을 돕습니다.

여기서 우리가 직접적으로 변경하며 사용하는 것은 settings.py와 urls.py입니다. 아직 위의 설명이 익숙하지 않거나 이해가 가지 않더라도 계속해서 따라서 진행해주시면 됩니다. 후에 프로젝트를 진행하는 과정속에서 자연스럽게 익혀질 내용들입니다.

2. Django app 생성

이어서 바로 프로젝트에서 첫 번째 앱을 생성해보겠습니다.

앱 생성시에는 앱 이름을 복수형으로 사용하는 것을 권장하고 있습니다.

python -manage.py startapp movies

위와 같이 명령어는 python -manage.py +startapp +앱 이름 순으로 작성됩니다.

성공적으로 앱이 생성된다면 다음과 같이 movies폴더가 생성된 것을 확인하실 수 있습니다.

프로젝트 생성 시 만들어진 파이썬 파일들도 같이 살펴보도록 하겠습니다.

  • admin.py
    • 관리자용 페이지를 설정 하는 곳입니다.
  • apps.py
    • 앱의 정보가 작성된 곳입니다.
  • models.py
    • 앱에서 사용하는 Modle(db)을 정의하는 곳입니다.
  • tests.py
    • 프로젝트의 테스트 코드를 작성하는 곳입니다.
  • views.py
    • view 함수들이 정의 되는 곳입니다.

그렇다면 이제 우리는 django 프로젝트와 앱 하나를 성공적으로 생성하였습니다. 축하합니다!

그런데 우리가 생성한 프로젝트와 앱은 과연 무엇이고 어떤 역할과 관계를 갖고 있을까요?

프로젝트와 앱의 역할과 관계에 대해 아주 간략하게 살펴보겠습니다.

3. Project & Application

Project

  • Project(이하 프로젝트)는 Application(이하 앱)의 집합
  • 프로젝트는 여러 앱이 포함될 수 있음
  • 앱은 여러 프로젝트에 있을 수 있음

Application

  • 앱은 실제 요청을 처리하고 페이지를 보여주고 하는 등의 역할을 담당

  • 하나의 프로젝트는 여러 앱을 가짐

  • 일반적으로 앱은 하나의 역할 및 기능 단위로 작성함

자 그러면 이제 프로젝트와 앱을 생성하였으니 우리가 코드만 짜주면 웹에 원하는 기능을 구현할 수 있을까요? 아닙니다. 아직 중요한 과정이 하나 빠졌습니다. 바로 우리가 생성한 앱을 사용할 수 있도록 등록해주는 절차가 필요합니다.

프로젝트에서 앱을 사용하기 위해서는 반드시 위에서 살펴본 settings.py 에서 INSTALLED_APPS 리스트에 앱을 추가해줘야 합니다.

INSTALLED_APPS는 django installation에 활성화된 모든 앱을 지정하는 문자열 목록입니다.

다음과 같이 INSTALLED_APPS에

  1. movies
  2. django-extensions

를 추가해주도록 하겠습니다.

django-extensions는 django의 기능들을 조금더 간편하게 그리고 파워풀하게 사용할 수 있는 기능을 제공해줍니다.

위와 같이 django는 INSTALLED_APPS에 등록 시

  1. Local apps
  2. Third party apps
  3. Django apps

로 나누어서 순서대로 작성하는 것을 권장합니다. 이는 꼭 지켜야할 사항은 아니나 향후 프로젝트가 복잡해졌을 때 편의를 위해 순서를 지켜 작성하는 것을 추천합니다.

자 그러면 django의 첫 프로젝트와 앱 제작이 및 등록까지 완성되었습니다.

profile
문송 개발자

0개의 댓글