[Python] 파이썬 장고 간단요약
업데이트:
파이썬 장고 간단요약
장고는 MVC가 아닌 MVT(Model, View, Template) 패턴을 사용.
스프링 vs 장고
스피링 | 장고 |
---|---|
model | model |
view | template |
controller | view |
프로젝트: 개발 대상이 되는 전체 프로그램
애플리케이션: 프로젝트를 몇개의 기능 그룹이로 나누었을때 프로젝트 하위의 서브프로그램을 뜻함
모델(model)
-
데이터베이스에 저장되는 데이터를 의미
-
모델이란 사용될 데이터에 대한 정의를 담고 있는 장고 클래스
-
하나의 모델 클래스는 하나의 테이블에 매핑되고, 모델 클래스의 속성은 테이블의 컬럼에 매핑됨.
-
장고는 ORM 기법을 이용해 애플리케아션에서 사용될 데이터베이스를 클래스로 매핑해서 코딩가능.
ORM(object relational mapping) 이란?
-
객체와 관계형 데이터베이스를 연결해주는 역할을 함
-
기존에는 웹프로그래밍에서 데이터베이스에 접근하려면 직접 sql 언어를 사용해 데이터를 요청해야했고 개발자는 sql 및 데이터베이스에 접근하기위한 드라이버 api등에대해 잘 알고 있어야했다.
-
하지만 ORM에서는 데이터베이스 대신에 객체(클래스)를 사용해 데이터를 처리할수있음
-
객체를 대상으로 필요한 작업을 실행하면 ORM이 자동으로 적절한 sql 구문이나 데이터베이스 api를 호출해서 처리해줌.
-
물론 원한다면 직접 sql을 사용해 데이터베이스 데이터를 얻어올 수도 있음
urls.py 파일에 url과 처리함수(뷰)를 매핑하는 파이썬 코드 작성
템플릿(template)
-
사용자에게 보여지는 UI부분, 화면 UI 정의
-
장고가 클라이언트에게 반환하는 최종 응답은 html 텍스트
뷰(view)
-
실질적인 프로그램 로직이 동작하여 데이터를 가져오고 적절히 처리한 결과를 템플릿에 전달하는 역할 수행
-
뷰는 웹 요청을 받아서 데이터베이스 접속등 해당 애플리케이션의 로직에 맞는 처리를 하고, 그 결과를 html로 변환하기 위해 템플릿 처리를 한 후 최종 html로 된 응답 데이터를 웹 클라이언트에 반환하는 역할을 함
-
장고에서의 뷰는 함수 또는 클래스로 작성되며 웹 요청을 받고 응답을 반환해 줌
-
view.py 파일에 작성
-
별도로 작성된 템플릿 파일을 해석해서 HTML 코드를 생성하고 이를 HttpResponse 객체에 담아서 클라이언트에게 응답.
MVT 코딩 순서
-
정해진 코딩 순서는 없음
-
화면설계: 뷰와 템플릿 코딩으로 연결
-
테이블 설계: 모델 코딩이 반영
-
따라서 독립적으로 개발할수있는 모델을 먼저 코딩하고, 뷰와 템플릿은 서로 영향을 미치므로 모델 이후에 같이 코딩하는것이 일반적
코딩순서
-
프로젝트 뼈대 만들기
-
모델 : model, admin.py
-
URLconf: urls.py
-
템플릿: 화면 ui, template하위 .html
-
뷰: views.py
모델 코딩
model.py : 테이블 정의
- 장고에서는 테이블을 하나의 클래스로 정의하고 테이블의 컬럼은 클래스의 변수(속성)로 매핑
admin.py : 정의된 테이블이 어드민 화면에 보이게 함
manage.py makemigrations : db 변경 필요사항 추출
- 장고에서 말하는 마이그래이션은 테이블 및 필드 생성, 삭제, 변경 등과 같이 데이터베이스 변경사항을 알려주는 정보
manage.py migrate : db 에 변경사항 반영
manage.py runserver : 현재까지 작업을 개발용 웹서버로 확인