갑자기 학교 프로젝트 수업에서 django를 이용한 웹 개발을 해야될 일이 생겨서 속성으로 django를 공부해야 될 상황에 처해버렸다.
프론트엔드는 대표적으로 javascript, html, css가 있는데 저는 장고를 사용하면서 html, css를 많이 다룰 예정이다.
백엔드는 대표적으로 nginx, django, docker가 있다. nginx는 서버 소프트웨어인데 클라이언트에서 받은 요청을 처리해 주는 역할을 한다. 장고만으로 한계가 있고 배포용으로 제작된것이 아니기 때문에 nginx를 같이 사용한다. 도커는 배포에 있어서 가장 중요한 역할을 가진다고 한다.
장고 내부에서는 여러가지 앱이 동시에 생성된다.

한 기능을 한곳에 담기에는 무리여서 앱마다 기능을 분리하였다. account는 계정담당, article은 게시글담당 이런식으로 각각의 앱들이 구축이 되고 이 모든것을 엮어서 하나의 앱서비스를 만들게 된다. 장고 서비스를 만들게 되면 이것이 django container가 되고 container를 도커 시스템에 밀어넣게 된다.
django의 기능을 짧게나마 알아보았고 django project를 만들어보자 프롬프트에 프로젝트를 실행하는 위치로 이동시킨 후 'django-admin startproject [프로젝트이름] ' 이렇게 명령하면 django project가 생성된다. 저같은 경우 프로젝트 이름을 aaa로 하였다.그다음 가상환경에서 django 패키지를 설치하였다.

만들어진 장고 프로젝트 안에는 위의 사진과 같이 manage.py와 기타 파일들이 있는것을 볼 수 있다. manage.py를 통해서 내가 원하는 행동을 다 할 수 있다.python manage.py runserver를 명령하게 되면

다음과 같이 서버가 생성만들어지며 
직접 url을 치고 들어가면 이런 화면이 나오는데 django를 시작할 준비가 되었다는 뜻이다.
기본적인 django의 개발패턴을 알아보겠다.
MVT 패턴이 있는데 Model, View, Template의 각각 앞글자의 약자를 딴 것으로 각자 주어진 역할을 수행하면서 전체적인 프레임워크를 구축한다는 핵심이 담겨있다.
예를 들어서 '한 사이트에서 유저가 회원가입해서 새로운 회원이 되고 유저가 새로운 게시글을 썼다. ' 라고 가정해보자.
예시에서'회원', '게시글' 이 한 객체가 될 수 있고 객체를 데이터베이스에 저장을 해야되는데 이 과정을 db쪽 언어를 사용하지 않아도 간편하게 저장할 수 있겠금 해주는것이 model이다.
데이터베이스는 객체와 속성이 열과 행으로 각각 매칭되어 있다. 객체 (게시글)에는 제목, 내용, 이미지가 있을텐데 이것을 속성이라고 하며 객체와 속성을 데이터베이스로 매칭해주는 중간과정을 model이 해준다.
django에서 계산하는 부분을 담당한다고 보면 된다.

javascript, html, css 처럼 프론트앤드와 밀접한 관련이 있다. 유저가 게시물을 보고 싶다고 서버에 요청하면 서버는 요청을 처리하고 전달을 해줄것이다. 서버와 유저 사이에 html이 있다고 치면 template이 동적으로 변하는 내용 즉 유저가 요청하는 내용을 만들어주고 html 내부에 생성할 수 있다. 그러면 그 내용이 유저한테 직접 보여주게 될 것이다.