지난 포스팅에서 장고를 설치했다면 이번엔 가장 기본적인 애플리케이션을 생성해보겠습니다.
실전편은 간단한 이론 메모들을 포함하며, 예제를 쭉쭉 따라가는 식으로 포스팅해보려고 합니다.
개인적으로 공부하면서 정리할겸 포스팅을 하게 되었는데 도움이 많이 되는것 같습니다 ㅎㅎ
공부 자료는 한빛 미디어의 장고로 배우는 웹 프로그래밍 : 파이썬 웹프로그래밍을 참고했습니다
포스팅이라는게 참 어려운 일이라는 걸 참 많이 느낍니다!
# 알아두기
---------------------------------------------------------------------------------
프로젝트 : 개발 대상이 되는 전체 프로그램
프로젝트를 몇 개의 기능 그룹으로 나눈 프로젝트 하위의 서브 프로그램 : application
이 Application들을 모아서 프로젝트 개발을 완성하는 것이다.
-> 프로젝트 Dir과 Application Dir을 구분하고, 코딩 파일도 proj 파일인지 app파일인지 구분해서 적절한 위치에 저장해야함!
장고의 이런 개념에서 중요한 점
: 하나의 Application이 여러 개의 프로젝트에 포함될 수 있기 때문에, Application은 한 번만 개발하고 이를 다른 프로젝트에 재사용하여 개발 생산성을 높일 수 있음.
애플리케이션 단위로 모아서 프로젝트를 만들고, 프로젝트를 모아서 더 큰프로젝트를 만드는 방식 -> 계층적 웹 프로그램 개발 가능
---------------------------------------------------------------------------------
- 첫 프로젝트 만들기 명령어 순서
- django-admin startproject mysite // Create Project ‘mysite’
- python manege.py startapp polls // Create App ‘polls’
- vi setting.py // settings 확인 / 수정
- python mange.py migrate // DB에 기본 Table 생성
- python mange.py // 현재까지의 작업을개발 개발용 웹 서버로 확인
4-1. 뼈대 생성
위의 순서에 따라 차근차근 따라가보자~
test라는 디렉토리를 만들어서 그곳에서 장고 프로젝트를 만들어보겠습니다
터미널에 cd test를 입력하여 test 폴더로 접근합니다
그리고 django-admin startproject mysite 를 실행하면,
장고가 알아서 프로젝트에 필요한 디렉토리와 파일들을 생성해줍니다.
이렇게요!
상위 mysite : 프로젝트 관련 디텍토리/파일을 모으는 역할
//이름을 변경해도 무방합니다
하위 mysite : 프로젝트 디렉토리
이름이 같아 헷갈릴수 있기때문에 저는 상위 mysite 디렉토리의 이름을 jmsst로 수정하겠습니다
mv(move) 터미널 명령을 사용하면 이름을 바꿀 수 있습니다.
맥, 리눅스는 mv mysite jmsst
윈도우는 move mysite jmsst
4-2. 애플리케이션 생성
프로젝트 루트 디렉토리 jmsst로 이동해서 votes라는 애플리케이션을 만들어 보겠습니다.
$cd jmsst 를 입력
하여 jmsst (프로젝트 디렉토리/파일이 모여있는 디렉토리)로 이동하여
$ python3 manage.py startapp votes
를 입력하면 장고가 votes 애플리케이션 디렉토리와 필요한 파일들을 생성해줍니다.
아래 사진처럼 말입니다!
4-3. 프로젝트 설정 파일 변경
프로젝트에 필요한 설정값은 settings.py에 지정합니다.
settings.py는 루트 디렉토리, 각종 디렉토리의 위치, 로그 형식, 프로젝트에 포함된 Application의 이름들을 지정합니다.
이번 예제를 실행하기 위해 4가지 설정을 확인해보겠습니다.
우선, settings.py를 열어봅시다.
이렇게 명령을 실행하고나면 settings.py 파일이 vi editor로 열리게 됩니다.
그럼, 설정을 해봅시다!
- ALLOWED_HOSTS 항목설정
- 장고는 DEBUG = True 는 개발모드, False 는 운영모드로 인식됩니다.
- 개발모드의 경우 값을 지정하지 않아도 [‘localhost’,’127.0.0.1’]로 인식합니다.
- 단, 운영 모드의 경우 반드시 서버 IP나 Domain을 지정해야합니다.
2.프로젝트 포함되는 Application을 모두 settings.py에 등록해야함.
- Application을 등록할 때 모듈명인 ‘votes’만 등록해도 되지만 application 설정 클래스로 등록하는 것이 더 정확한 방법.
- votes 앱의 설정 클래스는 startapp votes 명령을 실행했을때 자동생성된 apps.py에 VotesConfig라고 정의되어있습니다.
- 장고가 클래스를 찾을 수 있게 모듈 경로까지 포함해 votes.apps.VotesConfig로 등록합시다.
3. 프로젝트에 사용할 DB 엔진
- 장고의 Default : SQLite 3
- SQLite3를 사용할거니까 확인만 하고 넘어갑니다.
- MsSQL, Oracle, Postgres 등을 사용하려면 이 설정을 바꿔주면 됩니다.
4. 타임존 설정
- UTC(세계표준시)로 설정되어있으니, 본인이 위치한 타임존으로 설정해줍니다.
vi editor에서 빠져나와 변경사항을 저장하려면 esc를 눌러 터미널 맨 아래에 빈 스페이스가 생깁니다. :(콜론) 을 입력하고 wq!를 입력후 엔터!
그럼 수정사항이 w(쓰고) q(닫는다) !(강제로)에 의해 반영됩니다
4-4 기본 테이블 생성
migrate는 변경사항등을 DB에 반영해주는 명령입니다.
현재 테이블이 없는 상태에서 실행하면 사용자 및 그룹 테이블 등을 만들어줍니다.
자, 그럼 mysite 폴더에서 빠져나와
$python manage.py migrate 를 실행합니다.
아래처럼 출력이 된다면 잘 작동된 것입니다!
4-5. 지금까지의 작업 확인하기
runserver 명령을 이용해 간단한 테스트용 웹서버를 실행할 수 있습니다.
이 명령을 사용할 터미널 창을 새로 열어주는 것을 추천드립니다!
방금까지 사용하던 터미널 창에서 cmd+T 를 입력하면 새창이 생깁니다.
그럼 runserver를 실행시켜보겠습니다.
$python3 manage.py runserver 0:8000 #8000포트로 서버실행
> 다른방법으로 실행도 가능합니다
- python3 manage.py runserver # ip,port 미지정시 디폴트 127.0.0.1, 8000포트 사용
- python3 manage.py runserver 8888 # 디폴트 127.0.0.1, 지정한 8888포트 사용
- python3 manage.py runserver 0.0.0.0:8000 & # &을 붙이면 웹서버 프로그램이 백그라운드에서 실행. Mac, Linux only
이렇게 장고버전, 실행시간, 포트, 설정한 IP 등을 확인할 수 있습니다.
runserver를 중지하려면 cmd + C가 아니라 Control + C 를 눌러주면 됩니다.
자 이제 웹 브라우저를 통해 제대로 동작하는지 확인해봅시다!
짝짝짝~!! 잘됐습니다~~~
4-6 Admin 사이트에서 테이블 확인하기
이제 4-4 파트에서 migrate로 만들었던 테이블이 제대로 만들어졌는지 admin 사이트를 통해 확인해보겠습니다.
URL의 마지막부분에 /admin을 붙이면 장고의 admin(관리자) 사이트에 접속하여 테이블이 생성된 것을 확인할 수 있습니다.
이런 화면이 뜰텐데, 유저를 생성해줘야합니다.
우리는 개발자니까, 관리자(super user) 계정을 생성해봅시다.
$python3 manage.py createsuperuser
명령을 실행한 후, 안내에 따라 아이디, 이메일, 비밀번호를 설정해줍시다.
admin 사이트에 로그인을 합니다
이렇게 Groups, Users 테이블이 생성된 걸 확인 할 수 있습니다.
이렇게 뼈대를 만들고, 애플리케이션 구조를 만들고 서버 실행을 하는 것 까지 성공했습니다.
다음 포스팅에선 Votes application을 완성해보겠습니다!
'Web > Django' 카테고리의 다른 글
Django(장고) 이론 2 : MVT 패턴 (0) | 2019.06.13 |
---|---|
Django(장고) 이론 1 : Django의 특징 (0) | 2019.06.12 |
Django(장고) 실전 1 : Django 설치하기 (Mac기준) (0) | 2019.06.12 |