Web/Django

Django(장고) 실전 2 : 프로젝트 뼈대와 애플리케이션 생성하기

James Kim_SST 2019. 6. 18. 19:26

 

지난 포스팅에서 장고를 설치했다면 이번엔 가장 기본적인 애플리케이션을 생성해보겠습니다.

 

실전편은 간단한 이론 메모들을 포함하며, 예제를 쭉쭉 따라가는 식으로 포스팅해보려고 합니다.

개인적으로 공부하면서 정리할겸 포스팅을 하게 되었는데 도움이 많이 되는것 같습니다 ㅎㅎ

공부 자료는 한빛 미디어의 장고로 배우는 웹 프로그래밍 : 파이썬 웹프로그래밍을 참고했습니다

 

포스팅이라는게 어려운 일이라는 많이 느낍니다!

 

# 알아두기

---------------------------------------------------------------------------------

프로젝트 : 개발 대상이 되는 전체 프로그램

 

프로젝트를 개의 기능 그룹으로 나눈 프로젝트 하위의 서브 프로그램 : 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 열리게 됩니다.

 

그럼, 설정을 해봅시다!

 

  1. 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 완성해보겠습니다!