Django에 대한 간단한 정리
-
Python 기반의 풀스택 웹 프레임워크
-
기본 제공 목록
-
ORM
-
관리자 페이지
-
자주 사용되는 로직 묶음
-
만들어진 앤티티에 따라 인증 및 권한 목록 알아서 제공
-
캐싱
-
데이터 직렬화
-
-
도움이 되는 소프트웨어
-
완결성있는
개발자들이 개밸하고 싶은 거의 모든 것을 개발하는 데 도움 줌. 결과물은 일부일 뿐이며 도달하고자 하는 목표 지점은 같기에 일관된 디자인 룰 제공하여 광범위한 최신 문서 제공
-
다용도인
대부분의 기능 제공하지만, 필요하다면 다른 컴포넌트들을 사용하기 위해 확장 가능
-
안전한
아이디, 비밀번호 관리, SQL 인젝션, 크로스사이트 스크립팅, 크로스사이트 요청 위조, 클릭 하이제킹 과 같은 보안 취약점 보완할 방법 기본적으로 제공
-
확장성있는
컴포넌트 기반의 “shared-nothing”아키텍쳐(각각의 아키텍쳐가 독립적이어서 필요하다면 교체 및 변경할 수 있는) 사용하기 떄문에 어떤 레벨에서든 하드웨어 추가 해 대응 가능
-
유지보수가 쉬운
코드가 유지보수가 쉽고 재사용하기 좋게끔 하는 디자인 원칙들과 패턴들 이용하여 작성됨. Don’t Repeat Yourself(DRY)원칙 상요해서 코드 줄임 관련 기능들 재사용 가능한 application으로 그룹화, 더 낮은 레벨에서 관련된 코드들 모듈로 만듦(MVC와 유사)
-
포터블한
파이썬으로 작성되며, 특정한 서버 플랫폼에 얽매이지 않음
-
-
독선적이자 관용적
독선적인 프레임워크들은 특징은 “올바른 방법”에 대한 분명한 의견을 가지고 있고 그에 대한 빠른 개발방법을 제시하며 문서화가 잘 됨. 하지만 “올바른 방법”을 벗어나면 유연하지 못한 해결책 제시
관용적인 프레임워크들은 컴포넌트를 활용하고 붙이며 “올바른 방법”에 대한 제약이 없음. 개발자가 적절한 도구를 이용하기 쉽게 만듦. 하지만 직접 그 컴포넌트들을 찾아야 한다는 수고를 해야 함
Django는 웹 개발 작업을 다루는 컴포넌트 세트와 그 세트를 다루기에 두 가지의 방법을 둘 다 제공.
비결합 구조이기 때문에 옵션들 중 선택하거나 새로운 방법 만들 수 있음
-
코드 생김새
-
MVT 패턴
-
요소
-
URLS(urls.py)
URL mapper로 저장되며 요청 URL을 기준으로 HTTP요청을 적절한 뷰로 보내주기 위해 사용되며 URL에 나타나는 특정한 문자열이나 숫자 패턴 일치시켜 데이터로써 뷰 함수에 전달
-
View(views.py)
HTTP 요청을 수신하고 HTTP 응답을 반환하는 요청 처리 함수. Model을 통해 요청을 충족시키는데 필요한 데이터에 접근. 템플릿에게 응답의 서식 설정 맡김 view는 분리시키는 것이 리소스 유지보수하기 쉬움
-
Models
데이터 구조 정의하고 DB의 기록 관리(추가, 수정, 삭제) 하고 쿼리하는 방법을 제공하는 파이썬 객체 DB와 연동이 편하게 만들어짐 DBMS는 SQLite를 사용하게 되어있으며, Django Admin 기능을 통해 쉽게 조회/편집 가능
-
Templates
파일 구조나 레이아웃을 정의 실제 내용을 보여주는 데 사용되는 플레이스 홀더를 가진 텍스트 파일 View는 HTML 템플릿 이용하여 동적으로 HTML페이지 만들고 모델에서 가져온 데이터로 채움
-
-
MVC 패턴과의 차이
View는 사용자에게 보여지는 데이터를 설명하며 Templates는 어떻게 데이터가 보여질 지를 위임 Controller는 프레임워크 자체. 장고 URL 설정에 따라 요청을 적절한 View에게 전달.
-
-
전형적인 웹 사이트
-
웹 브라우저(또는 다른 클라이언트)로부터 HTTP 요청 기다림
-
요청 받을 시 URL과 POST 데이터 or GET 데이터의 정보레 기반하여 요구사항 알아냄
-
무엇이 필요한 지에따라 DB로부터 정보 읽거나 쓰고, 필요한 다른 작업 수행
-
클라이언트에 응답 반환. 주로 동적인 HTML 페이지 생성하면서 응답
-
-