본문 바로가기
[Framework] - Django

#0. Django 시작하기

by Bebsae 2020. 12. 8.

 

이번에는 django 웹 프레임워크를 설치하고 환경을 세팅하겠다.

 

우선, django를 사용하는 것은 "가상환경"에서 하는것을 추천한다. 왜? django의 버전에 대응하기 위함이다. 물론 django뿐만 아니라 다른 패키지들 또한 버전 대응에 용이하려면 가상환경에서 프로젝트를 수행하는 것이 용이하다.

가상환경 설치에 관련된 내용은 virtualenv에 관한 포스트를 보면된다. 

많은 포스트들을 보면 커맨드창에서 가상환경을 활성화 시키고 서버를 키거나, 패키지를 관리(pip)하는 등.. 여러 작업을 하는데 필자는 Pycharm의 terminal기능을 애용한다. Pycharm에서는 애초에 프로젝트 단위로 이미 설치된 가상환경을 세팅할 수 있다. 터미널을 추가하자마자 해당 가상환경이 활성화되어 있는 상태이고, 불필요하게 에디터 이외에 다른 창을 킬 필요가 없다.

 

 

pycharm 하단을 보면 있다.

 


뭐 여튼..
어떤 방법이든 가상환경을 활성화한 후, django를 본격적으로 시작해보자.

본 포스트는 django tutorial을 reference한다.
https://docs.djangoproject.com/en/3.1/intro/tutorial01/

 

Writing your first Django app, part 1 | Django documentation | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com


우선, 터미널창을 통해 django 프로젝트를 생성할 위치로 이동한다. cd(change directory) 명령어를 가용하면 된다.

그리고 다음과 같이 명령어를 입력한다.

django-admin startproject [프로젝트명]



django 프로젝트는 하나의 웹 사이트다. 그리고 그 안에 기능별로 app을 구분하면 된다. 물론 재사용가능한 app도 만들 수 있다.

 

python manage.py startapp [앱명]


각설하고.. 프로젝트의 구조는 다음과 같다.

(프로젝트명 : mysite, 앱명 : polls)

 

파란색 선은 필자가 직접 추가한 부분.

 

앱을 생성했으면 프로젝트에 앱을 등록해주어야 한다.

 

polls/settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'polls.apps.PollsConfig' # polls 앱의 apps.py의 PollsConfig 클래스
]

 

- manage.py : 커맨드와 django 프로젝트가 소통을 하는 창구 라고 생각하면 이해가 쉽다. 

대표적으로 쓰는 명령어들은.. 

 

python manage.py runserver [IP 주소]:[PORT] 

해당 IP주소와 포트번호로 서버를 실행. 입력하지 않으면 로컬호스트주소에 8000포트로 열린다.

 

python mange.py makemigrations [앱명]

해당 앱에 작성한 모델을 바탕으로 마이그레이션(테이블의 변동사항이라고 생각하면 쉬움)을 생성한다. 주의할 점은 생성된 마이그레이션을 절대로삭제하지 않는 편이 좋을 것이다. DB자체를 전부 날릴게 아니라면.. 생성된 마이그레이션의 operations 에 대한 내용은 따로 다루겠다.

 

python manage.py migrate

생성된 마이그레이션을 적용한다. 실제로 django 프로젝트를 생성하자마자 이 명령어는 한번 실행시켜야 한다. 그래야 admin 계정을 생성할 수 있는 테이블이 초기화된다.

 

python mangage.py createsuperuser

admin 계정을 생성한다.

 

- db.sqlite3 : DB, 별 다른 설명할 것이 있나..? 이걸 지우면 데이터베이스가 초기화된다.

아! 기본적으로 django는 sqlite가 db로 설정되어 있다. settings.py에서 다른 DB를 사용하도록 설정할 수 있다.

 

- mysite : 해당 폴더에는 프로젝트의 루트 폴더라고 이해하면 쉽다.

- mysite/settings.py : 이곳에는 프로젝트에 관련된 설정들이 있다. 예를들면, 기준 시각, DB, 프로젝트에 등록할 앱, 웹사이트에 접근을 허용할 호스트, 템플릿 등.. 

- mysite/wsgi.py, asgi.py : "현재 프로젝트를 서비스하기 위한 WSGI, ASGI 호환 웹 서버의 진입점" 이 부분은 문서를 찾아보는 편이 빠를 것이다. 위의 링크에서 찾아볼 수 있다.

 

- polls : 프로젝트에 필자가 생성한 앱이다.

- polls/migrations : python manage.py makemigrations 명령어를 통해 생성된 마이그레이션들의 폴더이다. 

- polls/admin.py : django에서 제공하는 관리자 페이지를 관리하는 영역이다. 커스텀 또한 가능하다.

- polls/models.py : 데이터베이스 안에 존재하는 테이블의 명세(스키마)라고 생각하면 쉽다.

- polls/tests.py : 해당 스크립트에서 테스팅 환경을 제공한다.

- polls/views.py : Spring 프레임워크로 따지면 Controller에 해당한다. url과 라우팅되어 로직을 구현하는 부분이라고 생각하자. 자세한 내용은 뒤에서 다루겠다.

 

다음 포스트에서는 서버를 구동시키고 간단하게 django에서 기본적으로 제공하는 관리자 페이지를 띄워보겠다.

#django #tutorial

댓글