본문 바로가기
  • 실행력이 모든걸 결정한다
Django

[Django] Django 소개 / 프로젝트 생성

by 김코더 김주역 2021. 8. 5.
반응형

1. Django 소개

- Python 기반의 Web Framework들 중 하나로, MVT(Model-View-Template) 패턴을 따른다. 장고는 MVC 패턴의 View를 Template, Controller를 View라고 부른다.

- 장고에서는 전체 프로그램을 프로젝트라 하고, 모듈화된 단위 프로그램을 애플리케이션이라 부르고 있다.

- ORM 기능을 제공하며, 최소한의 설정으로 다른 DB로 변경할 수 있다.

- 관리자(Admin) 화면을 제공한다.

- URL 설계가 편리하다.

- 자체 Template 시스템을 갖고 있다.

- 성능을 위해 캐시 시스템을 제공하며, 캐시용 페이지의 저장 위치와 캐시 단위를 다양하게 설정할 수 있다.

- 다국어 환경을 제공한다.

- 테스트용 웹 서버를 포함하고 있기 때문에 별도의 웹 서버가 없어도 테스트를 진행할 수 있다.

- 디버깅 모드를 통해 에러를 쉽게 파악할 수 있다.

- py 파일의 변경사항을 실행 파일에 자동으로 반영해준다.

 

※ MVT 패턴

Model : 사용될 데이터에 대한 정의를 담고 있는 장고 클래스로, ORM 기술의 적용 대상이다. 모델 클래스는 models.py에 정의한다.

View : 장고는 요청 URL과 url.py에 정의된 URL 패턴을 비교하여 View라고 부르는 처리 함수로 매핑시켜준다. 일반적으로 URL 패턴과 처리 함수는 url.py에 함께 정의되어 있으며, 처리 함수는 보통 view.py에 구현한다.

Template : 장고가 클라이언트에게 반환하는 최종 HTML 텍스트 응답이다.

 

 

 

2. Python 설치

Django는 Python으로 작성되는 Framework이므로 반드시 Python을 설치해야 한다.

웬만하면 최신 버전을 설치하면 된다.

www.python.org/downloads/

 

Download Python

The official home of the Python Programming Language

www.python.org

 

"Add Python 3.9 to PATH"를 체크하면, 여러분이 직접 환경변수를 추가하지 않아도 자동으로 설정된다.

 

 

 

3. Django 설치 및 업그레이드

프로젝트 파일을 생성한 뒤에, 프로젝트 폴더 내 터미널에서 다음 명령어로 Django를 설치하면 된다. 윈도우, 리눅스 모두 pip 프로그램으로 설치할 수 있다.

pip install Django

※ 루트 권한이 없는 경우는 로컬 디렉토리에 설치해도 된다. 다만 이러한 경우에는 가상 환경이 갖춰져 있어야 한다.

※ 리눅스에서 일반 유저로 실행하고 있다면 명령어 앞에 sudo를 붙인다.

 

아래 명령어를 입력했을 때 버전이 출력된다면, Django가 잘 설치된 것이다.

python -m django --version

 

또, 장고 업그레이드는 다음 명령어를 통해 진행할 수 있다.

pip install Django --updrade

 

 

 

4. 기본 프로젝트 생성

다음 명령어로 Django project를 구성하는 코드를 자동생성할 수 있다.

django-admin startproject mysite .

 

프로젝트 내에 mysite라는 디렉토리가 생성되었다.

 

 

 

5. 기본 세팅(권장)

Django 프로젝트를 처음 생성하자마자 미리 해두면 편한 기본 설정이다. 프로젝트 설정은 mysite/settings.py에서 이루어진다.

※ 장고에서 미리 정의해둔 모든 디폴트 설정 항목을 보고싶다면 django/conf/global_settings.py를 확인하자.

 

1) TEMPLATES의 'DIRS' 수정

- 장고에서 템플릿 파일을 찾을 디렉토리를 지정한 후 직접 생성해두자.

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

 

참고로, BASE_DIR은 기본적으로 다음과 같이 설정되어 있을 것이다.

BASE_DIR = Path(__file__).resolve().parent.parent

 

 

2) DATABASES의 'default'의 'NAME' 수정

- BASE_DIR 아래에 디렉토리를 하나 더 생성해두는 것이 배포할 때 편리하다고 한다. 마찬가지로 db 디렉토리도 직접 추가해주자.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db', 'db.sqlite3'),
    }
}

 

 

3) TIME_ZONE 및 LANGUAGE_CODE 수정

(장고 프로그램이 Asiz/Seoul 시간대만 사용할 경우)

TIME_ZONE = 'Asia/Seoul'
LANGUAGE_CODE = 'ko-kr'

 

 

4) USE_TZ 수정

(장고 프로그램이 Asiz/Seoul 시간대만 사용할 경우)

USE_TZ = False # 장고가 알아서 시간대를 조정해줄지의 여부

 

 

5) STATIC_URL 수정 및 STATICFILES_DIRS 추가

- 정적 파일을 담을 디렉토리를 설정한다.

- static 디렉토리도 직접 추가해주자.

STATIC_URL = '/static/'

 

STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]

 

 

6) MEDIA_URL, MEDIA_ROOT 추가

- media 디렉토리도 직접 추가해주자.

MEDIA_URL='/media/' # 각 MEDIA 파일에 대한 URL prefix
MEDIA_ROOT = os.path.join(BASE_DIR, 'media') # 파일 필드를 통한 저장 시에 실제 파일을 저장할 루트 경로

 

 

7) DB 파일 생성

- 테이블을 아직 만들지 않았더라도, 사용자 및 그룹 테이블 등이 필요하다.

python manage.py migrate

 

 

8) 관리자 계정 생성

- Admin 사이트에 로그인하기 위한 관리자 계정을 생성한다.

python manage.py createsuperuser

 

 

9) DEBUG와 ALLOWED_HOSTS

- 장고는 settings.py에서 DEBUG=True면 개발 모드로 인식하고, False면 운영 모드로 인식한다. 개발 모드에서는 에러 메시지가 웹 페이지에 그대로 노출되기 때문에, 운영 모드에서는 반드시 디버깅 모드를 꺼줘야 한다.

- 개발 모드인 경우에는 ALLOWED_HOSTS가 ['localhost', '127.0.0.1']로 간주되고, 운영 모드인 경우에는 반드시 ALLOWED_HOSTS를 서버의 IP나 도메인으로 직접 채워 넣어야 한다.

 

 

 

6. 프로젝트 실행

다음 명령어로 Django 프로젝트를 실행할 수 있다. manage.py 파일은 명령어를 처리해주는 파일이다.

py manage.py runserver

※ py manage.py runserver 0.0.0.0:8888또는 py manage.py runserver 8888와 같이 ip 주소나 포트 번호를 명시해주는 방법도 있다. 생략 시 ip주소는 127.0.0.1로, 포트번호는 8000으로 실행된다.

※ 리눅스나 맥 환경에서는 명령 끝에 &를 추가하면 웹 서버 프로그램이 백그라운드에서 실행된다. 또, 백그라운드로 실행된 서버를 종료할 때는 kill 명령을 사용하면 된다.

"http://localhost:8000/" 에 접속했을 때 아래와 같은 화면이 나온다면 웹 서버가 잘 구동된 것이다.

Django의 실행을 멈추고 다시 터미널로 돌아오려면 터미널 화면에서 Ctrl+C를 누르면 된다.

 

 

 

7. Django 통용 개발 스타일

- URL 패턴 이름과 템플릿 블록 이름에는 대시(-) 대신 밑줄(_)을 이용할 것

- 통합 개발 환경이나 텍스트 편집기에 종속되는 스타일의 코딩은 지양할 것

- 개발 환경과 운영 환경에서 동일한 종류의 데이터베이스 엔진을 사용할 것

- Django + PostgreSQL이 추천되는 조합

 

 

 

8. Django 삭제

장고 프로그램이 설치되어 있는 디렉토리로 이동하기 위해 다음 명령어로 장고가 설치된 디렉토리를 파악한다.

python -c "import django; print(django.__path__)"

 

site-packages/ 로 이동한다.

 

그리고 아래 명령어를 순차적으로 입력한다.

rm -rf django
rm -rf Django*

 

 

 

참고) Django 공식 문서

https://docs.djangoproject.com/ko/4.1/

 

Django

The web framework for perfectionists with deadlines.

docs.djangoproject.com

 

 

반응형

댓글