본문 바로가기

Django 스터디

1주차 스터디 _ Intro , Django Tutorial 란?

Django란? 

장고(Django)는 파이썬으로 작성된 무료 오픈 소스 웹 애플리케이션 프레임워크입니다. 장고는 웹 개발을 보다 쉽고 빠르게 만들어주는 도구로, 웹 애플리케이션을 개발할 때 필요한 많은 기능들을 포함하고 있습니다.

 

모델-뷰-템플릿(MTV)

장고는 MVC (Model-View-Controller) 패턴의 변형인 MTV(Model-Template-View) 아키텍처를 사용하여 데이터, 비즈니스 로직 및 사용자 인터페이스를 분리합니다.

 

1. Model

: DB(데이터 베이스) 와 통신을 하게 해주는 편리한 도구

장고에서는 Model 아키텍처를 사용하기에, 장고 내에서 DB 언어를 사용하지 않고도 DB의 내용을 삭제하거나 

수정하는 것이 가능합니다. (DB 안에는 행과 열, 그리고 행과 열에는 각각의 속성들이 들어있습니다.) 

 

2. Template

: 웹 페이지의 외관 및 레이아웃을 정의하는데 사용, 템플릿은 HTML,CSS,JavaScript 및 기타 템플릿 언어 요소로 구성됨.

-템플릿을 사용하면 동적으로 생성되는 웹 페이지를 만들 수 있으며, 서버 측 데이터와 조건부 논리를 결합하여 웹 페이지의 내용을 구성할 수 있습니다. 

 

3. View

: 웹 애플리케이션의 비즈니스 로직을 처리, 클라이언트의 요청에 대한 응답을 생성하는 파이썬 함수 또는 클래스

 

  • 웹 서비스 구조  (*중요!) 

 

1.클라이언트 (사용자)가 서버에게 요청을 보내게 됩니다. 이때, 요청은 HTTP 프로토콜을 통해 전달됩니다.                          요청은 HTTP 메소드(GET, POST, PUT, DELETE 등)와 함께 URL과 데이터를 포함할 수 있습니다.

 

2) 서버는 요청을 받으면 먼저 URLconf를 사용하여 요청된 URL을 어떤 view 함수 또는 클래스와 연결하는지 확인합니다.  이를 통해 어떤 view가 요청을 처리할지 결정됩니다.

 

** View 함수와 클래스는 개발자에 의해 미리 작성되어 있는 상태입니다. 뷰는 장고 애플리케이션의 핵심적인 부분 중     하나이며, 개발자는 애플리케이션의 요구에 따라 필요한 뷰를 작성합니다. 

: 뷰 함수는 파이썬 함수로 작성되며, 주로 'render' 함수를 사용하여 HTTP 응답을 반환합니다. 해당 함수는 템플릿을 렌더링하고, 렌더링된 HTML을 HTTP 응답으로 반환합니다.  

 

3) view 는 클라이언트의 요청을 처리하기 전에 보안 검사, 인증 및 권한 부여 등의 추가 작업을 수행할 수 있습니다. 이는 요청이 유효하고 안전한지 확인하는 과정입니다.

 

4) view 는 요청을 처리하기 위해 필요한 데이터를 model 을 통해 데이터베이스에서 가져올 수 있습니다. 이 과정은 데이터베이스 쿼리를 실행하여 데이터를 조회, 수정, 삭제하는 과정을 포함합니다.

 

5) view  는 데이터를 적절하게 가공하여  Template 으로 전달합니다. Template 은 이 데이터를 사용하여 사용자가 볼 최종 HTML 페이지를 생성합니다.

 

6) 최종 결과는 HTTP 응답(response)의 형태로 클라이언트에게 반환됩니다. 응답은 HTML 페이지, JSON 데이터, 이미지 파일 등 다양한 형식으로 반환될 수 있습니다.

 

++ 부가적인 설명 

서버는 URLconf(URL Configuration)를 사용하여 클라이언트의 요청된 URL을 어떤 view 함수 또는 클래스와 연결하는지 확인합니다. 이를 통해 요청이 어떤 뷰에 의해 처리될지 결정됩니다.

이때, 하나의 URL에 대응되는 뷰가 여러 개일 수 있습니다. 각 URL 패턴은 특정한 뷰 또는 뷰의 집합에 연결될 수 있습니다. 이것은 장고의 유연성과 확장성을 높이는 중요한 특징 중 하나입니다.

일반적으로 하나의 URL 패턴에는 하나의 뷰가 연결되는 경우가 많지만, 대규모 애플리케이션에서는 뷰를 작은 단위로 나누어 관리하는 것이 유용할 수 있습니다. 이렇게 하면 코드의 재사용성과 유지보수가 쉬워지며, 각 뷰가 담당하는 기능이 명확해집니다.

예를 들어, 사용자 인증과 관련된 기능은 별도의 로그인 뷰, 로그아웃 뷰, 회원가입 뷰 등으로 나누어 구현할 수 있습니다. 또한, 블로그 애플리케이션에서는 글 목록을 보여주는 뷰, 글 상세 내용을 보여주는 뷰, 글 작성 뷰 등으로 나누어 구현할 수 있습니다.

이렇게 URLconf를 통해 요청된 URL이 어떤 뷰에 의해 처리될지 결정되며, 이러한 구조는 장고 애플리케이션의 효율적인 관리와 확장을 가능하게 합니다.

 

장고 Template 문법

 

* Hyper text : 문서 간 이동이 가능한 text 

* text : 써내려가는 언어 

 

*extends / include

: 장고 템플릿 시스템에서 템플릿 상속 및 재사용을 위한 중요한 문법 

 

1. extends : 미리 만들어 놓은 내용 (블록) 들을 바탕으로, 나머지 내용들을 채워나간다. 

 

2. include : 자그마한 조각들을 가져와서 붙여넣는다. 

                                      -> Extends 로 바탕을 만들고 include로 세부적인 내용들을 채워 넣기

 

 

: 유저로부터 요청을 받았을 때, 서버가 최종적으로 보내줄 결과물 (Response View)

 

'Django 스터디' 카테고리의 다른 글

2주차 스터디 _ Django Tutorial  (0) 2024.03.30