Do it! 장고+부트스트랩 파이썬 웹 개발의 정석를 읽고, 정리한 글입니다.
목록
· 웹 프레임워크란?
· 장고란?
· 장고의 작동 과정
· MTV 패턴이란?
웹 프레임워크란?
· 웹 개발을 하다보면 공통적으로 사용하는 기능들(예: 로그인, 회원가입, CRUD 등)이 있다. 웹프레임워크는 이러한 공통 기능들을 미리 개발해 놓은 상태로 제공한다.
· 이미 개발되어 있는 기능을 가져와 사용하기 때문에 빠르게 개발할 수 있고, 이미 많은 사람들이 사용하면서 발전시켜 놓은 기능이기 때문에 성능과 보안 측면에서도 충분히 검증된 방법으로 개발할 수 있다.
장고란?
· 파이썬으로 웹 개발을 쉽게 할 수 있도록 도와주는 웹 프레임워크다.
· 장고의 장점:
1. 파이썬 프로젝트를 쉽게 발전시킬 수 있다.
- 장고를 사용하면 기존의 파이선 프로젝트를 웹 기반으로 발전시키기 쉽다. 이를 통해 웹 개발에 웹 크롤링을 이용한 데이터 수집, 업무 자동화, 데이터 분석, 인공지능 분야의 파이썬 라이브러리를 적극적으로 활용할 수 있다.
2. 웹 개발 입문자의 진입 장벽을 낮춰준다.
- 웹 개발을 처음 배울 때 접하는 개념이 너무 많아 어려움을 겪을 수 있다. ex) 컴퓨터가 서버 기능을 하기 위해 Nginx 등의 웹 서버를 설치해야 하고, 방문자 정보를 저장하기 위해 데이터베이스를 알아야한다.
- 장고를 사용하면 웹서버를 설치하지 않고 파이썬 명령어 하나로 서버를 실행할 수 있고, 데이터베이스를 설치하지 않고, 파이썬 코드로 데이터베이스를 충분히 다룰 수 있다. 전문적인 웹서버와 데이터베이스는 장고에 익숙해진 뒤 적용하면 된다.
3. 관리자 페이지를 기본적으로 제공한다.
- 장고는 프로젝트를 생성하는 순간 관리자 페이지를 자동으로 만들어 준다.
- 관리자 페이지에서 개발 중인 웹 사이트의 데이터베이스 구조를 쉽게 파악할 수 있고, 내용의 수정, 삭제 또한 가능하다.
4. 보안 기능을 기본적으로 제공한다.
- 처음 웹 개발을 하게 되면 보안에 대한 개념이 부족해 취약점이 노출된 상태로 개발하게 될 가능성이 높다. 장고를 이용하면 장고 보안 가이드에 따라 웹 개발을 진행하게 되므로 보안 실수를 하지 않게 된다.
장고의 작동 구조
· 장고로 만든 웹 사이트의 작동 구조는 다음과 같다.
1. 클라이언트(웹 브라우저)는 일련의 과정을 거쳐 scshim.tistory.com이라는 이름의 서버를 찾아간다.
2. urls.py을 요청해 개발자가 써놓은 내용을 확인한다.
ex) 'scshim.tistory.com'이라는 URL로 접속했을 때 index라는 함수를 실행시킨다. 'scshim.tistory.com/login/'로 접속했을 때 login이라는 함수를 실행시킨다.
3. urls.py에서 언급한 함수 또는 클래스는 views.py에서 정의한다.
ex) index 함수에는 최근 게시글 5개를 index.html에 채워서 보여준다. delete_post 함수를 호출하면 게시글을 삭제한다.
4. 게시글에 대한 내용은 models.py에서 정의한다.
ex) '게시글이 담아야 할 정보는 제목, 글 내용, 작성자, 작서일이다'와 같은 식으로 정의한다. 장고에서는 이렇게 자료의 형태를 정의한 클래스를 모델이라고 한다.
5. models.py에서 정의한 모델에 맞게 데이터베이스에서 필요한 자료를 가져온다.
ex) views.py의 index 함수가 데이터베이스에서 최근 게시글 5개를 가져오는 기능을 한다면, 데이터베이스에서 최근 게시글 5개를 불러온다.
6. 데이터베이스에서 가져온 자료를 템플릿의 빈 칸에 채워서 사용자의 웹 브라우저로 보낸다.
MTV 패턴이란?
· 장고로 만든 웹 사이트는 모델로 자료의 형태를 정의하고, 뷰로 어떤 자료를 어떤 동작으로 보여줄지 정의하고, 템플릿으로 웹 페이지에서 출력할 모습을 정의한다. 이러한 작동 구조를 줄여서 MTV 패턴이라고 부른다.
· 사용 목적: 웹 사이트 기능을 분리해서 관리함으로써 프런트엔드 개발자는 HTML을 비롯한 화면 구성에 집중할 수 있고, 백엔드 개발자는 화면 뒤의 작업에 집중할 수 있다.
'파이썬 > 장고(django)' 카테고리의 다른 글
[Django] 튜토리얼1. 요청과 응답(Requests and responses) (0) | 2022.05.29 |
---|---|
[Django] 다대일 관계와 다대다 관계 (0) | 2022.04.06 |
[Django] 장고를 통한 테스트 주도 개발(TDD) (0) | 2022.04.06 |
[Django] 장고를 통해 웹 사이트 만들기 (1) | 2022.04.02 |
[Django] 장고 설치 및 환경설정하기 (0) | 2022.03.31 |
댓글