[Django] Kickoff day1

juri·2021년 7월 14일
0

Django

목록 보기
2/11
post-thumbnail

0.시작하기 전에..

참고 사이트 : 장고 공식 홈페이지 튜토리얼 링크 / 장고걸스 튜토리얼 링크

0-1. 가상환경 시작

#가상환경 이름 : project
source activate project

0-2. 장고 프로젝트 시작

#프로젝트 디렉토리명 : mysite
django-admin startproject mysite

0-3. 장고 앱 생성

#manage.py가 있는 디렉토리 내에서 실행
#앱 이름 : polls
python manage.py startapp polls

0-4. 서버 실행

python manage.py runserver 

개발 서버 구동은 로컬IP http://127.0.0.1:8000/ 에서 확인 가능


project 디렉토리 구성


manage.py : 장고 프로젝트와 상호작용하는 커맨드라인의 유틸리티
--init--.py가 있는 것을 보면 알 수 있듯이 디렉토리 내에 프로젝트를 위한 파이썬 패키지들이 저장된다고 생각하면 된다.

polls 앱 생성 시 생기는 디렉토리의 구성

1. URL

mysite/urls.pypolls/urls.py
두 가지 url.py 가 필요하다. 후자는 직접 생성해주어야 한다.

  • 첫번째 urls.py가 상위 디렉토리에 있는 파일로 웹 클라이언트가 입력하는 URL 주소를 검사해 해당하는 앱 디렉토리 내에 있는 urls.py로 연결한다. (편의상 이후의 내용에선 .py를 생략한다)
  • 앱 디렉토리 내에 있는 하위 urls은 같은 디렉토리 내에 있는 view 모듈을 연결한다.

1-1.


상위 urls모듈에서 모든 url패턴의 문자열을 포착, 검사한다.
-path가 'polls/'가 들어가는 url을 polls패키지의 urls 모듈로 보낸다.
-include는 다른 urls모듈을 참조할 수 있게 돕는다.

1-2.


앱 디렉토리 내의 urls 모듈은 url주소와 해당하는 view모듈과 연결한다. polls/urls.py로 오는 모든 url주소는 'polls/'로 시작한다.
-name으로 이름을 부여할 수 있으며 이 후, polls:index의 형태로 사용한다. (polls 라는 값은 app_name 을 이용해 urls모듈에서 지정할 수 있음) 장고 어디에서나 참조할 수 있고 프로젝트의 모든 url패턴을 바꾸기 위해서 단 하나의 파일만 수정해도 되게하는 아주 고마운 기능이다.

2. Database

장고는 기본적으로 SQLite를 사용하도록 지정되며 이번 실습에선 그대로 유지한다. 다른 데이터베이스를 사용하는 경우엔, settings.py에서 DATABASES 설정을 변경한다.
(settings.py에서 시간대, 설치한 앱 설정을 변경해야한다. 이 후 해당 내용을 정리하는 섹션에서 자세하게 다루도록 한다)

2-1. 모델링

먼저, 데이터베이스의 구조를 정의한다. 직관적으로 데이터를 정리해보기 위해서 AQueryTool을 이용해 테이블 형태로 만들어보았다. (Null칸은 무시바람) Question 과 Choice는 일대일 관계를 갖고있다.


각 속성들이 갖는 데이터타입과 데이터베이스의 필드를 일치시킨다.

(Question)
-question_text : CharField
-pub_date : DateTimeField
(Choice)
-question : ForeignKey
-choice_text : CharField
-votes : IntegarField
(참고사항)
CharField는 max_length를 입력해주어야 한다.
IntegarField에 default값을 지정할 수 있다.

2-2. 테이블 생성

먼저, 테이블 작업파일을 생성한 뒤 실제 테이블을 생성하는 과정이 뒤따른다.

#테이블 작업파일 생성
python manage.py makemigrations polls

모델을 변경시킨 사실과 이 변경사항을 migration으로 저장하고 싶다는 것을 장고에게 알려준다.

python manage.py sqlmigrate polls 0001

migration이 내부적으로 어떤 SQL문장을 실행하는 지 볼 수 있다. (실제로 테이블을 생성하지 않기 때문에 실제 테이블을 생성하기 위해서는 꼭 migrate 를 실행한다.)
수동으로 지정하지 않아도 Pk값인 id와 Fk값인 question_id가 자동으로 생성됐음을 볼 수 있다. 테이블의 이름은 '앱이름` + '모델이름'이 조합되어 자동으로 생성된다.

#실제 테이블 생성
python manage.py migrate

데이터베이스에 모델과 관련된 테이블을 생성한다.

profile
Make my day !

0개의 댓글

관련 채용 정보