카테고리 없음
Django에 관해 알아보자.
abccoco
2022. 7. 26. 23:29
Django란?
보안이 우수하고 유지보수가 편리한 웹사이트를 신속하게 개발하는 하도록 도움을 주는 파이썬 웹 프레임워크이다.
Django의 장점
장점
- 관리자 화면 - 거의 시간을 들이지 않고도 사용할 수 있는 수준의 관리자 화면 사용 및 Customize 이 가능하다.
- 활발한 커뮤니티 - 다양한 케이스의 문제와 해결책을 찾아볼 수 있다.
- ORM - models.py에 클래스로 작성하면 데이터베이스 테이블을 자동으로 생성해준다.
- 자체적으로 지원하는 기능들이 많고, 기능이 복잡해지면 app을 사용해 분리할 수 있어서 확장성이 좋다.
Django의 프로세스 동작 순서
- 유저가 특정 url로 요청을 보냅니다.
- 서버에 접속하면 urls.py는 url요청에 따라 view를 분배한다.
- 호출된 뷰는 요청에 따라 적절한 로직을 수행하며 그 과정에서 모델에게 CRUD를 지시합니다.
- 모델은 ORM을 통해 DB와 소통하며 CRUD를 수행합니다.
- 그 후 뷰는 지정된 템플릿을 렌더링하고
- 최종 결과를 응답으로 반환합니다.
Django의 디자인 패턴
장고는 MTV(Model - Template - View) 를 사용한다.
MTV에 관해 말하기 전에 MVC도 알면 좋은데 왜냐하면 MVC MTV 둘다 비슷한 패턴이기 때문이다.
- MVC(Model-View-Controller) 는 구성 요소를 Model, View, Controller로 구분하는 패턴이며, 각각의 구성 요소가 다른 요소들에게 영향을 미치지 않도록 한다.
- M - 데이터를 가지고 있으며, 데이터를 처리하는 로직 또한 가지고 있습니다.
- V - 화면에 요청에 대한 결과물을 보여주는 역할을 합니다.
- C - 모델과 뷰를 이어주는 역할을 한다고 보시면 됩니다. 요청에 따라 모델에게 적절한 로직을 가동하도록 알려주고 모델이 응답하면 그 응답을 뷰에 전달하는 역할입니다.
- MTV(Model - Template - View) 패턴 또한 명칭이 조금 다를 뿐이지 기본적인 골자는 MVC 패턴과 동일하다.
- M - DB에 저장되는 데이터를 의미한다. 모델은 클래스로 정의되며 하나의 클래스가 하나의 DB Table입니다. 장고 ORM(Object Relational Mapping)기능을 지원한다.
- T - 유저에게 보여지는 화면을 의미한다. 장고는 뷰에서 로직을 처리한 후 html 파일을 context와 함께 렌더링하는데 이 때의 html 파일을 템플릿이라 칭합니다. 장고는 자체적인 Django Template 문법을 지원한다.
- V - 요청에 따라 적절한 로직을 수행하여 결과를 템플릿으로 렌더링하며 응답합니다.
Django ORM이란?
장고는 ORM 기능을 지원하기 때문에 DB를 조작할 때 SQL을 다룰줄 모르는 사람도 파이썬 코드만으로 DB를 조작할 수 있도록 한다.
ORM(Object Relational Mapping)
를 약자 그대로 해석해 본다면,
객체(Object)와 관계형 데이터베이스(Relational Database)의 데이터를 매핑(Mapping)해주는 것을 의미한다.
ORM을 사용하면 어떻게 SQL을 다룰 줄 몰라도 DB를 조작할 수 있을까?
객체 간의 관계를 바탕으로 SQL을 자동 생성하여 sql쿼리문 없이도 데이터베이스의 데이터를 다룰 수 있게 해주기 때문이다.
Django ORM의 장단점
장점
- 객체지향적 접근만 고려하면 되기 때문에 생산성이 좋다.
- 재사용, 유지보수, 리팩토링의 용의성이 좋다.
단점
- ORM 으로만 완벽히 서비스를 구현하기가 어렵다.
- 복잡한 쿼리문의 경우 ORM의 객체 지향적인 장점을 활용하기 어렵다.
Django Admin
django에서 제공하는 자동 관리 인터페이스로, 모델을 중심으로 데이터베이스의 기본적인 CRUD 기능을 통해 사이트의 콘텐츠 관리와 운영을 도와준다.
Django Template Engine
템플릿 양식과 특정 데이터 모델에 따른 입력 자료를 합성하여 결과 문서를 출력하는 소프트웨어를 말한다.
DTL을 이용하여 변수를 이용해 값을 상속하거나, 내장 태그를 이용하여 조건문이나 반복문을 하거나 csrf token을 이용한 보안 기능, 템플릿 상속을 정의하는 것도 가능하며, 다양한 내장 필터로 변수 값을 변환할 수 있다.