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을 설치해야 한다.
웬만하면 최신 버전을 설치하면 된다.
"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' 카테고리의 다른 글
[Django] Admin 사이트 커스터마이징 (0) | 2023.01.22 |
---|---|
[Django] 정적 파일 및 미디어 파일 처리 (0) | 2021.08.09 |
[Django] Admin 기초 / 동적 URL / views 기초 (0) | 2021.08.09 |
[Django] Database 사용 (0) | 2021.08.06 |
[Django] 프로젝트 내에 앱 생성 (0) | 2021.08.05 |
댓글