참고 사이트 : 장고 공식 홈페이지 튜토리얼 링크 / 장고걸스 튜토리얼 링크
#가상환경 이름 : project
source activate project
#프로젝트 디렉토리명 : mysite
django-admin startproject mysite
#manage.py가 있는 디렉토리 내에서 실행
#앱 이름 : polls
python manage.py startapp polls
python manage.py runserver
개발 서버 구동은 로컬IP http://127.0.0.1:8000/ 에서 확인 가능
manage.py
: 장고 프로젝트와 상호작용하는 커맨드라인의 유틸리티
--init--.py
가 있는 것을 보면 알 수 있듯이 디렉토리 내에 프로젝트를 위한 파이썬 패키지들이 저장된다고 생각하면 된다.
polls
앱 생성 시 생기는 디렉토리의 구성mysite/urls.py
와 polls/urls.py
두 가지 url.py 가 필요하다. 후자는 직접 생성해주어야 한다.
.py
를 생략한다)
상위 urls모듈에서 모든 url패턴의 문자열을 포착, 검사한다.
-path
가 'polls/'가 들어가는 url을 polls패키지의 urls 모듈로 보낸다.
-include
는 다른 urls모듈을 참조할 수 있게 돕는다.
앱 디렉토리 내의 urls 모듈은 url주소와 해당하는 view모듈과 연결한다. polls/urls.py로 오는 모든 url주소는 'polls/'로 시작한다.
-name
으로 이름을 부여할 수 있으며 이 후, polls:index
의 형태로 사용한다. (polls 라는 값은 app_name
을 이용해 urls모듈에서 지정할 수 있음) 장고 어디에서나 참조할 수 있고 프로젝트의 모든 url패턴을 바꾸기 위해서 단 하나의 파일만 수정해도 되게하는 아주 고마운 기능이다.
장고는 기본적으로 SQLite를 사용하도록 지정되며 이번 실습에선 그대로 유지한다. 다른 데이터베이스를 사용하는 경우엔, settings.py
에서 DATABASES 설정을 변경한다.
(settings.py
에서 시간대, 설치한 앱 설정을 변경해야한다. 이 후 해당 내용을 정리하는 섹션에서 자세하게 다루도록 한다)
먼저, 데이터베이스의 구조를 정의한다. 직관적으로 데이터를 정리해보기 위해서 AQueryTool을 이용해 테이블 형태로 만들어보았다. (Null칸은 무시바람) Question 과 Choice는 일대일 관계를 갖고있다.
각 속성들이 갖는 데이터타입과 데이터베이스의 필드를 일치시킨다.
(Question)
-question_text : CharField
-pub_date : DateTimeField
(Choice)
-question : ForeignKey
-choice_text : CharField
-votes : IntegarField
(참고사항)
CharField
는 max_length를 입력해주어야 한다.
IntegarField
에 default값을 지정할 수 있다.
먼저, 테이블 작업파일을 생성한 뒤 실제 테이블을 생성하는 과정이 뒤따른다.
#테이블 작업파일 생성
python manage.py makemigrations polls
모델을 변경시킨 사실과 이 변경사항을 migration
으로 저장하고 싶다는 것을 장고에게 알려준다.
python manage.py sqlmigrate polls 0001
migration
이 내부적으로 어떤 SQL문장을 실행하는 지 볼 수 있다. (실제로 테이블을 생성하지 않기 때문에 실제 테이블을 생성하기 위해서는 꼭 migrate
를 실행한다.)
수동으로 지정하지 않아도 Pk값인 id
와 Fk값인 question_id
가 자동으로 생성됐음을 볼 수 있다. 테이블의 이름은 '앱이름` + '모델이름'이 조합되어 자동으로 생성된다.
#실제 테이블 생성
python manage.py migrate
데이터베이스에 모델과 관련된 테이블을 생성한다.