백엔드 개발 공부 일지
#0. 장고(Django)란? 본문
Do it Django 웹개발 프로젝트
현재 Do-it-Django 파이썬 웹개발의 정석 책을 통해 하단과 같이 블로그를 개발해놓았다.
(AWS를 통해 IP가 배포되어 있고 도메인 연결전 단계까지 완료)
블로그는 나름 그럴싸하게 나온 모양이지만 책을 보고 따라했으므로 아직 Django의 기능들을 이해하며 수행하지는 못하는 단계이다.
천천히 블로그에 정리해보면서 Django의 기능을 세세히 다시 이해해보고 다음 단계인 Java Spring을 통해 웹개발을 시도해볼 예정이다.
● 웹사이트의 작동구조
장고(Django)는 대표적인 웹 사이트의 개발을 지원해주는 프레임워크이다. 장고를 배우기전 웹사이트의 기본적인 개념을 이해해보자.
웹사이트는 크게 2개로 나누면 아래와 같이 프론트 엔드와 백엔드로 나누어진다. 백엔드 없이 프론트엔드만으로 간략하게 웹페이지를 개발할 수 있고 실제로 그렇게 운영되기도 하며 HTML, CSS, 자바스크립트로만으로 만든 경우가 이에 해당한다.
1) 프론트 엔드
프론트 엔트는 클라이언트와 서버중 클라이언트를 담당한다. 보통 웹사이트를 이용한 고객의 '요청'을 처리하는 부분과 요청에 따른 렌더링 및 출력을 담당한다.
2) 백엔드
프론트엔드만으로의 웹개발은 일방적으로 정보를 제공하는 역할만을 수행한다. 다시 말해, 방문자의 행동과 요청을 받아들일 수 가 없다. 더불어 웹 사이트 관리자도 새로운 내용을 추가하기 위해는 html파일을 일일히 수정해야 하는 번거러움이 있어 이를 담당하기 위해 데이터 베이스를 사용한다.
데이터 베이스를 활용하면 사용자 계정, 사용자들의 게시글과 댓글, 조회수, 추천수 같은 데이터를 수시로 저장할 수 있고 HTML 템플릿내의 실시간으로 출력이 가능하다. 이를 수행하기 위해서는 HTML, CSS와 같은 프론트 엔드 기술 뿐만이 아닌 백엔드 기술까지 다를 줄 알아야 한다.
3) 웹 프레임워크의 역할
이러한 데이터 베이스를 구현하는것에는 사실 쉬운 부분은 아니다. 그래서 우리는 웹프레임워크의 도움을 받아 웹개발에 사용되는 많은 공통적인 부분을 쉽게 개발을 할 수 있다. 로그인기능이 있는 웹의 경우 계정 생성, 계정 정보 표시, 계정 수정및 삭제등등이 이런 공통된 기능이다.
여기서 확인할 수 있는것은 백엔드는 대표적인 CRUD를 개발하는 작업이다. Create, Read, Update, Delete의 약자로 백엔드개발의 대표적인 요소로 이러한 기능을 쉽게 수행하기 위해 우리는 장고(파이썬), 스프링(자바)와 같은 웹프레임워크를 사용해 안정적인 웹사이트를 구축한다.
● 장고의 작동 구조
1.클라이언트 : 클라이언트가 웹브라우저에서 url을 이용해 장고 서버에 접속 ex) xxx.com/ 접속
2. urls.py : 서버에 접속하면 urls.py는 url요청에 따라 view를 분배 ex) GET xxx.com/myname , POST xxx.com/myposting ...
3. views.py : view에서는 클라이언트의 요청을 처리함 (url에서 언급하는 class 나 함수를 가지고 있음, 최근게시물 5개를 index.html에 채워서 보여준다, delete_post 등)
4. models.py :데이터 형태를 모델로 표현하고 Create, Read, Update, Delete 인터페이스를 제공 (게시글(post)의 대한 내용이 model.py 에서 정의된다.)
5. database : 모델에서 요청한 내용을 실제 데이터베이스 내부에서 처리
6. html파일(template) :사용자 요청에 맞게 html을 만들어(빈칸이 채워지면서) 사용자의 웹브라우저로 전달
● MTV패턴
장고로 만들어진 웹사이트는 모델(model)로 데이터를 추상화하고 뷰(view)로 어떻게 처리를 할지 정하고, 템플릿(template)으로 웹 페이지에 출력할 내용을 정한다. MVC패턴과 동일한데 이렇게 하면 백엔드로직과 프런트엔드 디자인을 분리할 수 있다는 장점이 있다.
● 장고 프로젝트 개발 구조
아래와 같이 웹프로젝트를 시작할 때 프로젝트를 생성하고 개발할 앱을 생성하게 된다. 이처럼 프로젝트와 앱을 생성하면 아래와 같은 하위 폴더나 파일이 default로 생성되며 모든 파일은 각각의 독립된 기능을 수행하게 된다.
django.admin startproject XXXX .
__init__.py
admin.py
apps.py
models.py
tests.py
views.py
python manage.py startapp XXXX
> migrations
__init__.py
admin.py
apps.py
models.py
tests.py
views.py