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이 아닌 템플릿 코드들도 들어있습니다.
지금까지 장고에 대해서 기본적인 세팅과 구조에 대해서 알아보았습니다.
실제로 프로젝트를 만들어 보면서 부족한 부분들을 채워보도록 하겠습니다.
'Old Branch' 카테고리의 다른 글
장고(Django) 예제 / 북마크 프로젝트 - 2. 장고 뷰, url 연동하기 (0) | 2019.07.23 |
---|---|
장고(Django) 예제 / 북마크 프로젝트 - 1. 개발환경 세팅하기 (0) | 2019.07.22 |
스프링 부트(Spring Boot)와 Security, MySQL, React를 사용한 Spring Polling App(4) (3) | 2019.07.19 |
스프링 부트(Spring Boot)와 Security, MySQL, React를 사용한 Spring Polling App (2) (2) | 2019.07.18 |
스프링 부트(Spring Boot)와 Security, MySQL, React를 사용한 Spring Polling App(3) (0) | 2019.07.18 |