Django
- 파이썬 기반의 웹 프레임워크
- MVT 패턴에 따라 개발 진행
- M(model): DB에 저장되는 데이터
- V(view): 실직적으로 프로그램 로직이 동작하여 데이터를 처리
- T(template): 사용자에게 보여지는 UI 부분
- django에서 MVT 패턴에 따라 데이터를 처리하는 과정
1) 사용자로부터 요청(request)을 받으면 URLconf를 이용하여 URL 분석
2) URL 분석 결과를 통해 처리를 담당할 view를 결정
3) view는 자신의 로직을 실행하고, DB처리가 필요하면 model을 통해 처리하고 그 결과를 반환 받음
4) view는 자신의 로직 처리가 끝나면 template을 사용하여 사용자에게 전송할 HTML파일을 생성
5) view는 최종 결과로 HTML파일을 사용자에게 보내 응답함(response)
Project & app
Project: 만들고자 하는 서비스. 즉, 웹페이지
app: 서비스 안에서 작동하는 기능들
네이버를 만든다고 가정하면 네이버가 project.
네이버 안에 있는 blog 기능, mail 기능, 뉴스 기능들이 app
- projet는 여러 app들이 모여져 만들어 진다.
- app은 어떤 project에든 사용 할 수도, 사용을 그만 할 수도 있다.
django 시작하기 (polls app)
1. project 만들기
- command: django-admin startproject "mysite" (mystie는 프로젝트이름)
- django에서 필요한 디렉토리 및 파일 생성
- 프로젝트를 생성하게 되면 mysite 디렉토리가 2개 생성되는 상위 디렉토리는 별 의미가 없으므로 혼동을 방지하기 위해 이름을 바꾸는 것을 추천
2. app 만들기
- command: python manage.py startapp "polls" (polls는 app이름)
- app에서 필요한 디렉토리와 파일 생성
- 프로젝트에 app 등록
- mysite/setting.py로 이동
- ISNTALLED_APP list에 'polls.app.PollsFonfig' 추가 (app을 생성하면 해당 앱에 대해 자동으로 생성)
- 이 외에도 setting.py을 통해 timezone, db 엔진을 설정할 수 있음
3.기본 테이블 만들기
- migrate: db에 변경 사항이 있을 때 이를 적용하기 위해 해주는 명령어
- django는 사용자와 그룹 테이블이 필요하다는 가정하에 동작
- 따라서 app 생성 후 db을 만들지 않았어도 migrate을 통해 기본 테이블을 만들어 줌
- SQLite3 데이터베이스 파일 생성됨(db.sqlite3)
4. 작업 확인하기
- command: python manage.py runserver
- 간단한 테스트용 웹 서버 제공
- terminal에 서버 주소 확인(default http://127.0.0.1:8000/)
- ctrl + C 키로 runserver 정지
- runserver을 이용하여 언제든지 지금까지의 작업 확인 가능
5. app 개발 - model
1) models.py에 테이블 코드 작성
2) admin.py에 models.py에 설계한 테이블들 반영 (관리자 사이트에 설계한 model을 반영한 것으로 관리자 사이트는 TIL #33 참고)
3) 새로 만든 model에 대해서 migration 파일 추출
- command: python manage.py makemigration polls (poll는 app 이름)
- migration 파일: db에게 주는 일종의 작업 지도서
4) migrate으로 추출한 migration 파일을 db에 적용
- command: python manage.py migrate polls
6. view & template 만들기
1) 필요한 로직들을 함수 또는 class을 이용하여 코딩
2) 작성 로직을 UI로 보여줄 template 작성
3) 작성한 로직과 template을 맵핑한다.
7. URLconf - URL/view 맵핑
- 사용자의 요청에 맞는 view의 로직이 실행 되기 위해서 URL과 view의 맵핑이 필요함
- URL과 view는 1:1 매칭(N:1도 가능)
- urls.py에 매핑 정보 작성
- 해당 app의 디렉토리에 urls.py 파일을 새로 만들어 작성하는 것을 추천
- 프로젝트의 urls.py에 작성해도 되지만, 이럴 경우 유지 보수가 전자보다 어려움
- urls.py을 새로 만들어 맵핑을 했다면, 프로젝트의 urls.py에 새로 만든 URLconf을 import 해줘야 함