[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 코딩 순서

  • 정해진 코딩 순서는 없음

  • 화면설계: 뷰와 템플릿 코딩으로 연결

  • 테이블 설계: 모델 코딩이 반영

  • 따라서 독립적으로 개발할수있는 모델을 먼저 코딩하고, 뷰와 템플릿은 서로 영향을 미치므로 모델 이후에 같이 코딩하는것이 일반적

코딩순서

  1. 프로젝트 뼈대 만들기

  2. 모델 : model, admin.py

  3. URLconf: urls.py

  4. 템플릿: 화면 ui, template하위 .html

  5. 뷰: views.py

모델 코딩

model.py : 테이블 정의

  • 장고에서는 테이블을 하나의 클래스로 정의하고 테이블의 컬럼은 클래스의 변수(속성)로 매핑

admin.py : 정의된 테이블이 어드민 화면에 보이게 함

manage.py makemigrations : db 변경 필요사항 추출

  • 장고에서 말하는 마이그래이션은 테이블 및 필드 생성, 삭제, 변경 등과 같이 데이터베이스 변경사항을 알려주는 정보

manage.py migrate : db 에 변경사항 반영

manage.py runserver : 현재까지 작업을 개발용 웹서버로 확인