Airbnb 클론코딩을 진행하면서, 다양한 개념에 대해서 알게되는것 같습니다! 오늘은 WebFrameWork 장고에 대해서, 배운걸 기록해보겠습니다.
WebFramWork
FrameWork는 "모든 레고가 준비되어 있는 큰 레고상자"라고 생각하면 저는 더 와닿았습니다. 특히, "조립법"까지 모두 정해져있는 레고상자입니다. "FrameWork"는 정해진 사용법이 있다는게 라이브러리와 큰 차이점인 것 같습니다.
코드 내에서의 차이점을 보자면, 라이브러리는 프로그래머가 가져와서 쓰고 , FrameWork는 프로그래머가 작성한 코드를 가져갑니다.(이게 무슨말이야)
즉, 라이브러리는 라이브러리 내의 일종의 함수를 내가 import해서 활용하는 측면이 강하다면, FrameWork는 이미 활용법이 정해져 있는 함수와 필드값내에서, 그 함수에 프로그래머가 직접 코드를 작성하고, 그 코드를 기반으로 동작한다는 이야기 입니다. 프레임워크를 직접 수정할 수 있지만, 절대 권장되지 않습니다. 왜냐하면, 장고 프로젝트를 실행하기 위해서는 Django가 필요한데 , 프레임워크를 수정한 상태라면, 설치되는 PC의 Django 또한 Custom되어야하기 때문입니다.
Django
Django는 Python으로 이루어진 FrameWork입니다. Django는 다양한 기능들을 프로그래머가 직접 구현할 필요없이 , 이미 내제되어 있는 기능들이 많습니다. Django는 객체지향을 기본으로 하는 FrameWork입니다.
Django Project의 구성
Django는 Project 1개에 여러가지 App들이 결합되는 형태로 구성이 됩니다. App은 Data와 Logic이 묶인 하나의 모듈이라고 생각하면 됩니다. 그리고, Django는 Setting.py를 통해서 , App들을 서로 연결하고 하나의 서비스로 만들어줍니다.
manage.py는 Terminal에서 "Django 명령어가 실행될 수 있게끔" 해주는 파일입니다.
명령어
django-admin startproject [name] [directory]
Django App의 구성
App을 생성하면, model, Admin, Migration,view 등이 생성되게 됩니다. Data는 Model에서 담당합니다. DB와 연동을 위해서 Migration을 생성하고, Migrate 작업이 필요합니다. 이때, 생성되는 Migration은 Model에 정의된 코드를 기반으로 생성되게 됩니다. Admin은 장고에서 기본적으로 제공해주는 Admin page를 커스텀할 수 있게 해줍니다. View는 저희가 아는 그 View(화면)입니다.
* Migration
Application을 개발하다보면, DataBase의 스키마를 변경할 일이 빈번하게 발생합니다. 예를들어, 새로운 서비스를 추가하기 위해서, 테이블의 컬럼(Atrribute)를 추가하거나, 다른 테이블을 생성하거나, 심지어 데이터가 현재의 도메인 구조와 다르다면, 모든 데이터 값을 수정해야 할 수도 있습니다. (기존에 있던 데이터들은 새로운 Column이 생기는 경우) 이러한 과정을 Migration이라고 합니다. 즉, 서버에서 DB로 접근하여 DB를 Control하는 과정이라고 볼 수 있습니다. 장고에서는 모델수정(Data) -> make migration -> migrate -> DB 적용의 순서입니다.
좋은 아키텍쳐, 좋은 설계가 왜 중요한지 점점 더 알게되는 것 같습니다. 데이터의 무결성, 데이터의 중복방지 등, 데이터베이스 설계에 대한 공부도 꾸준히 해야할 것 같습니다.
'Project' 카테고리의 다른 글
[python/poetry/Django] Python Webproject 셋팅하기 -1 (0) | 2022.10.24 |
---|---|
[React/state/React상태관리] TodoList 삽질하기 2 (0) | 2022.10.04 |
[React/State/React상태관리] React TodoList로 삽질하기 (1) | 2022.09.30 |
[Project/JS/배너] 자바스크립트로 이미지 슬라이더 직접 만들기 - 오류,기능추가! (0) | 2022.09.02 |
[Project/JS/배너] 자바스크립트로 이미지 슬라이드 구현 - 슬라이드 기능 구현 (0) | 2022.09.02 |