Old Branch

Django 구성 분석하기와 기본 세팅

woolbro 2019. 7. 20. 11:10
반응형

Django 공부 할 때, 예제를 무작정 따라하기만 했는데 이해가 안되는 부분이 모여서 결국에는 더이상 나가지 못하는 지경에 이르렀습니다....하하하

 

그래서 Django를 설정하는 방법과 기본적인 세팅, 구성요소에 대해서 분석 해 보려고 합니다.

 

이번 포스팅의 코드는 Github 저장소에 있습니다.

 

Django를 설정하고 시작하는데에 PyCharm을 사용했습니다.

 

 


Django 프로젝트 만들고 설정하기

Virtualenv

파이썬을 사용 할 때에 "가상환경" 을 사용 할 건데요, 가상환경에 관한 내용은 아래의 접은글에 모아 놓았습니다.

사용 이유와 설치, 사용방법 등을 모아놓았습니다.

...더보기

 

PyCharm을 실행 하고 프로젝트를 실행 하면, "Project Interpreter : New Virtualenv environment" 라는 설정이 있습니다.

눌러서 확인하고, Location 란에 "venv"가 존재하는 것을 확인 한 후에 프로젝트를 생성 해 줍니다.

 

프로젝트 생성이 완료 되었다면, PyCharm 아래의 "Terminal"을 눌러줍니다.

 

이전에 에디터에서 시작했던 가상환경 설정과는 달리, PyCharm이 바로 해당 프로젝트에 맞는 가상환경(venv)를 실행 시켜 줍니다.

 

때문에 터미널 창 앞에 "(venv)" 가 붙어있습니다.

 

$ pip install django

위의 명령어를 터미널 창에 입력하면, django를 pip를 사용해서 설치하게 됩니다.

 

위와 같은 화면이 나오면 설치에 성공한 것입니다.

 

$ django-admin startproject config .

설치에 성공 한 후, django 명령어를 사용해서 설정을 해 주겠습니다. 위의 명령어를 사용해서 config라는 설정을 만들도록 하겠습니다.

여기서 중요한 것은 config 다음에 한 칸을 띄우고 점(.) 이 있다는 것입니다.

이 점은, "현재 폴더에 파일들을 만들겠다" 라는 표현입니다.

 

위의 명령어가 실행되면 아래의 그림처럼, 현재 위치에 config 폴더와 manage.py 파일이 생성됩니다.

 

 

장고 설정파일과 장고를 실행 할 수 있는 파이썬 파일을 만들었습니다. 

 

이제 이 프로젝트에서 사용 할 db를 생성 해 주도록 하겠습니다.

 

python manage.py migrate

 

위의 명령어를 입력해 DB를 초기화 하면서 파일을 생성합니다.

 

위와 같은 화면이 나오고 생성에 성공했다는 알림이 나오면, db파일이 생성된 것을 확인 할 수 있습니다.

 

 

db에 이제 정보를 저장하고 읽고 수정 및 삭제를 할 수 있게 되었습니다.

 

이제, 이 프로젝트를 관리할 "슈퍼유저" 를 생성하도록 하겠습니다.

 

$python manage.py createsuperuser

 

위의 명령어를 입력하면 Terminal에 유저를 생성하는 기능이 출력 됩니다. 그대로 따라서 생성 해 주면 됩니다.

 

 

기본적인 설정은 완료되었으니까, 서버를 실행 시켜 보도록 하겠습니다.

 

$ python manage.py runserver

성공한 서버를 실행 시켰을 때 위와 같은 화면이 나오면성공 한 것입니다.

 


Django 프로젝트 구조 및 기능 살펴보기

 

 

config 폴더

- 프로젝트 설정 파일과 웹 서비스 실행을 위한 파일이 들어 있습니다.

- 이 폴더 이름은 django-admin start project 명령을 사용 해 프로젝트를 만들 때생성 된 것이며 꼭 config가 아니어도 됩니다.

- 생성 후 변경하면 귀찮아지기 때문에, 생성하기 전 이름을 잘 결정해 주면 좋습니다.

 

1) __init__.py

- 파이썬 2.x  대 버전과의 호환을 위해 만들어진 비어있는 파일입니다.

- 파이썬 3.x 대 버전에서는 불필요하지만, 계속 생성 되어지는 파일입니다.

- 이 폴더가 하나의 묶음이다 라는 의미를 가지고 있습니다.

 

2) settings.py

- 프로젝트 설정에 관한 다양한 내용이 들어있습니다.

- 뒤에서 더욱 자세히 다루도록 하겠습니다.

 

3) urls.py

- 특정 기능을 수행하기 위해 접속하는 주소를 url이라고 하고 이를 설정해 줍니다.

- url 설정을 이 파일 안에 기록합니다.

- 한 프로젝트 안에 여러개의 urls 파일을 만들게 된다.

- config(최초 생성되는 프로젝트 파일) 파일 내의 urls.py가 최초로 탐색되는 기준 url  vkdlfdlqslek.

- 기준 urls.py 파일은 settings.py에서 변경 할 수있습니다.

 

4) wsgi.py

- 웹 서비스를 실행하기 위한 wsgi 관련 내용이 들어 있습니다.

- 특별히 변경할 일이 거의 없습니다

 

venv 폴더

- 프로젝트 구동에 필요한 가상환경이 들어있는 폴더입니다.

- 되도록 수정이나 삭제 하지 않는 것이 좋습니다.

 

db.sqlite3 

- SQLite3 DB 파일입니다. 

- SQLite3 를 사용 할 경우, 임의로 삭제하거나 위치를 이동하면 안됩니다.

- 다른 DB를 사용 할 경우에는 필요 없는 파일

 

manage.py

- 장고의 다양한 명령어를 실행 하기 위한 파일입니다.

 


 

Settings.py

settings.py는 프로젝트에 관한 다양한 설정이 모두 들어있습니다.

기본 값(default)들은 django/conf/global_setting.py 파일에 담겨있습니다.

settings.py안에 있는 값들을 하나씩 보도록 하겠습니다.

 

- BASE_DIR 

   > 프로젝트 루트 폴더, 설정 파일이나 py 파일 등에서 프로젝트 루트 폴더를 찾아 그 하위를 탐색하거나 하는 일을 수행합니다.

 

- SECRET_KEY

   > 보안을 위해 사용 됩니다.

   > 세션값의 보호나 비밀번호 변경시 사용되는 보안 URL을 만드는 일 등에 사용

 

- DEBUG

   > 디버그 모드를 설정합니다.

   > True 일 경우 다양한 오류 메시지를 즉시 확인 할 수 있습니다.

   > 실제 어플리케이션 배포 시에는 False로 바꿉니다.

 

- ALLOWED_HOSTS

   > 현재 서비스의 호스트를 정합니다.

   > 실제 도메인을 기록합니다. (개발시에는 비어두자..)

   > Debug 모드가 False일 때, ALLOWED_HOSTS가 비어있으면 서비스를 시작 할 수 없습니다.

 

- INSTALLED_APPS

   > 장고 웹 서비스는 다양한 앱의 결합으로 만들어 집니다.

   > 현재 프로젝트에서 사용하는 앱의 목록을 기록하고 관리합니다.

   > 작성하고 추가 할 앱 또한 이곳에 추가 해 주어야 합니다.

 

- MIDDLEWARE

   > 장고의 모든 요청/응답 메시지 사이에 실행되는 특수한 프레임워크들입니다.

   > 주로 보안에 관한 내용들이 많습니다.

 

- ROOT_URLCONF 

   > 기준이 되는 urls.py의 경로를 설정합니다.

 

- TEMPLATES

   > 장고에서 사용하는 템플릿 시스템에 관한 설정들입니다.

   > 템플릿 해석 엔진과 폴더의 경로 등을 변경하는데 사용됩니다.

 

- WSGI_APPLICATION

   > wsgi 어필리케이션을 설정합니다.

 

- DATABASES

   >  DB 관련 설정입니다.

 

- AUTH_PASSWORD_VALIDATORS

   > 비밀번호 검증을 위한 설정입니다. 기본적인 검증 로직이 들어있습니다.

 

- LANGUAGE_CODE

   > 다국어에 관한 설정.

 

 


 

장고 기본 명령들

  • django-admin startproject : 장고 프로젝트를 만드는 명력. 웹 서비스를 만들 때 마다 한번 실행합니다.
  • startapp : 프로젝트에 기능 단위인 앱을 새로 만들 때 사용
  • makemigrations : 어플리케이션에 변경 사항을 추적해 DB에 적용 할 내용을 정리합니다. 앱 안의 모델에 변경 사항이 존재할 때 사용
  • sqlmigrate : 실행 할 SQL 명령문을 출력합니다. 
  • migrate: 실제 변경사항을 DB에 반영합니다.
  • showmigrations : 프로젝트의 DB 변경사항 목록과 상태를 출력합니다.
  • runserver : 테스트 서버를 실행합니다. 웹 서비스를 실제로 동작 시켜 확인합니다.
  • dumpdata : 현재 DB의 내용을 백업할때 사용
  • loaddata : 백업 파일에서 DB로 내용을 복구 할 때 사용합니다.
  • flush : DB 테이블은 그대로 두고 테이블의 내용만 전부 삭제
  • shell : 장고 쉘을 실행합니다. 작성한 모델 등을 불러 와 실제로 테스트 해 볼 수있습니다.
  • dbshell : DB에 직접 접근 할 수 있는 쉘을 실행합니다. 장고 관리자에 문제가 있을 때 주로 dbshell을 통해 DB를 수정
  • createsuperuser : 관리자 계정을 생성
  • changepassword : 계정의 비밀번호를 변경 할 수 있습니다.

위의 기본 명령들은 대략적으로 알아두면 좋습니다.

 


이제 앱을 추가해서, MTV 모델과 생성되는 파이썬 파일들을 확인 해 보도록 하겠습니다.

 

$ python manage.py startapp app_default

 

위의 명령을 입력하면, app_default 이름을 가진 app이 생성됩니다.

 

 

models.py

모델(model)은 DB의 구조를 결정합니다. 장고에서는 models.py를 통해서 DB의 명세를 관리합니다.

장고는 이 모델을 이용해 DB의 종류에 상관 없이, SQL을 잘 모르더라도 DB를 편하게 이용 할 수 있도록 ORM을 사용합니다.

 

admin.py

모델을 이용해 DB에 테이블을 생성했다면 이를 추가, 수정, 삭제, 확인이 가능해야 합니다. 이것을 CRUD라고 하는데, 웹 프로그래밍에서 CRUD 중요하다고 할 수 있습니다.

 

모델을 만들고 CRUD 페이지를 만들어야 하지만 모델이 제대로 만들어 졌는지 확인을 하고 싶다면 장고의 기본 관리자 페이지를 사용해서 확인 할 수 있습니다.

admin.py에 자신이 만든 모델을 관리자 페이지에서 확인하거나 특별한 기능을 추가 할 수 있습니다.

 

views.py

예를 들어, 게시판을 만든다고 할 때, CRUD를 생각 해 보면 글쓰기, 글 보기, 글 수정, 글 삭제 이런 페이지들이 필요합니다.

이 페이지들을 만들 때에는 views.py에 하나씩 작성 해 줍니다.

 

Class Based 와 Function Based 두가지가 있습니다.

대부분의 프로그래밍 작업은 뷰를 만들고 수정 하는 일이 될 것입니다.

 

urls.py

views.py에 기능을 만들면, 기능을 동작 시키는 방식은 url을 통한 호출 방식이 주가 됩니다.

"어떤 url"을 이용해 "어떤 view"를 동작 시킬까를 결정 해야 하는 것을 결정 해 주는 파일입니다.

 

templates

보통 HTML이 들어있는 파일입니다. 대부분 html 의 확장자를 가지고 있지만, html이 아닌 템플릿 코드들도 들어있습니다.

 

 

 

지금까지 장고에 대해서 기본적인 세팅과 구조에 대해서 알아보았습니다.

실제로 프로젝트를 만들어 보면서 부족한 부분들을 채워보도록 하겠습니다.