프로젝트 & 애플리케이션 개발 실습
프로젝트 = 전체 프로그램
애플리케이션 = 프로젝트 하위의 서브 프로그램
즉, 프로젝트를 기능으로 나누어 애플리케이션을 개발하고 이것을 통합하여 프로젝트 개발을 완성하는 구조
실습 주제
설문에 해당하는 질문을 보여주고 설문에 해당하는 투표를 하면 결과를 알려주는 프로그램 설계
화면 UI 설계
index.html : 설문 리스트를 보여줌
detail.html : 하나의 설문에 투표할 수 있는 답변 항목을 보여줌
result.html : 투표 완료 후 설문에 따른 결과를 보여줌
DB 테이블 설계
Question 테이블 ( 설문 저장 테이블 )
컬럼명 | 타입 | 제약 조건 | 설명 |
id | int | NotNull, PK, AutoIncrement | Primary key |
question_text | varchar(200) | NotNull | 질문 문장 |
pub_date | datetime | NotNull | 질문 생성 시각 |
Choice 테이블 ( 설문별 답변 항목 저장 테이블 )
컬럼명 | 타입 | 제약 조건 | 설명 |
id | int | NotNull, PK, AutoIncrement | Primary key |
choce_text | varchar(200) | NotNull | 답변 항목 문구 |
votes | int | NotNull | 투표 카운트 |
question | int | NotNull, FK (Question.id), index |
Foreign Key |
FK를 이용하여 Question 테이블과 Choice테이블 연결하고 index도 추가
프로젝트 뼈대 만들기
코딩의 시작 = 프로젝트 뼈대 만들기
즉, 프로젝트에 필요한 디렉토리와 파일을 구성하고 설정 파일을 세팅. 그 외에도 기본 테이블 생성 + 관리자 계정 생성
프로젝트 뼈대 만들기 명령어 과정
django-admin startproject 프로젝트이름 // 프로젝트 생성
python manage.py startapp 애플리케이션이름 // 애플리케이션 생성
notepad setting.py // 설정 파일을 확인 및 수정
python manage.py migrate // DB에 기본 테이블 생성
python manage.py runserver // 현재까지 작업을 개발용 웹 서버로 확인
프로젝스 생성
실습으로 mysite라는 프로젝트를 생성
그러면 mysite라는 디렉토리가 최상위와 하위, 총 2개가 생성된 것을 확인 가능
최상위 mysite = 프로젝트 관련 디렉토리/파일을 모으는 역할만 하는 디렉토리 => 특별한 의미x 변경 가능
하위 mysite = 프로젝트 디렉토리
애플리케이션 생성
프로젝트 루트 디렉토리(ch3)으로 이동하여 polls라는 애플리케이션을 생성
해당 명령어를 실행하면 Django가 애플리케이션 개발에 반드시 필요한 파일을들 자동 생성
즉, 개발자는 해당 내용만 채워넣으면 됨
프로젝트 설정 파일 변경
settings.py = 프로젝트에 필요한 설정 값들을 저장
루트 디렉토리를 포함한 각종 디렉토리 위치, 로그의 형식, 프로젝트 내 애플리케이션 이름 등이 지정
settings.py 파일 열기
첫 번째, ALLOWED_HOSTS 항목을 지정
개발모드(DEBUG = True) : 별도의 값 지정x 자동으로 ALLOWED_HOSTS=['localhost', '127.0.0.1']로 간주
운영 모드(DEBUG = False) : 반드시 서버의 IP를 지정 ex> ALLOWED_HOSTS=['192.168.56.101']
두 번째, 프로젝트에 포함되는 애플리케이션 설정 파일에 등록
애플리케이션 생성시 만들어지는 apps.py 파일에 있는 애플리케이션 설정 클래스를 등록
형식은 '애플리케이션이름.apps.애플리케이션이름Config'
settings.py의 INSTALLED_APPS 리스트에 추가 ( 'polls.apps.PollsConfig' )
세 번째, 프로젝트에 사용할 DB 엔진
Django는 디폴트로 SQLite3 DB 엔진을 사용하도록 설정
settings.py의 DATABASES 리스트 값을 수정하여 DB엔진을 변경 가능
네 번째, 타임존 지정
Django는 디폴트로 세계표준시(UTC)로 설정 => 한국 시간(Asia/Seoul)으로 변경
settings.py의 TIME_ZONE의 값을 수정
기본 테이블 생성
migrate 명령은 DB에 변경사항을 반영해주는 명령
기본 테이블 생성을 위해 루트 리렉토리에서 명령어 실행
실행 결과로 SQLite3 DB 파일인 db.sqlite3 파일이 생성
기본 테이블이 필요한 이유 : Django는 웹 프로젝트 개발 시 반드시 사용자와 그룹 테이블이 필요
따라서 프로젝트 개발 시점에 사용자와 그룹 테이블을 만듬
지금까지 작업 확인하기
지금까지 프로젝트 뼈대에 해당하는 프로젝트 디렉토리 생성, 애플리케이션 디렉토리 생성, 프로젝트 설정 파일 수정, 기본 테이블 생성을 진행. => 여기까지 하면 Django가 제공해주는 웹 페이지 실행 가능
확인을 위해 웹 서버를 실행하고 접속 ( 루트디렉토리에서 명령어 실행 )
0.0.0.0이란 IP주소는 서버의 IP주소가 무엇으로 설정되어 있더라도 그와는 무관하게 웹 접속 요청을 받겠다는 의미
웹 접속을 하면 아래와 같이 성공 페이지 출력
관리자(슈퍼유저) 생성
Django에서 기본적으로 제공해주는 Admin사이트에 접속할 수 있는 슈퍼유저 생성
루트 디렉토리에서 명령어 입력
유저이름 / 이메일 / 패스워드 / 패스워드확인 입력하여 슈퍼유저 생성 완료
Admin사이트에 접속하면 전에 만들었던 기본 테이블(Users 와 Groups) 확인 가능
이곳에서 DB 테이블에 대한 C.R.U.D를 쉽게 작업 가능
'Django' 카테고리의 다른 글
6 - 필수적으로 알아야 하는 Django의 핵심 기능들 (0) | 2023.02.24 |
---|---|
5 - MVT 실제 코딩하기 (0) | 2023.02.07 |
3 - Django 이론 (0) | 2023.02.02 |
2 - 파이썬 웹 관련 라이브러리 이론 (0) | 2023.02.02 |
1 - 웹 애플리케이션 이론 (0) | 2023.02.02 |