웹 프레임워크 Django(python) 개념 정리

Jeongyun Heo·2021년 1월 19일
0

django

목록 보기
1/4

웹 프레임워크 Django(python) 개념 정리
https://youtu.be/LYmZB5IIwAI

MVC & MTV

  • Model (데이터)
    안전하게 데이터를 저장
  • View (모델에 있는 데이터를 유저에게 원하는 형태로 적절하게 보내줌)
    데이터를 적절하게 유저에게 보여줌
  • Control, Template(Django)
    사용자의 입력과 이벤트에 반응하여 Model과 View를 업데이트

다양한 코드들이 하나의 파일에 들어있었음

여러 명이 같이 작업할 때 굉장히 불편한 경우가 많았음

어떤 사람이 MVC 제안

코드를 조금씩 분리하기 시작

분리하다 보니까 거의 대부분 프로젝트들은 3가지로 분리하면 시스템 구성이 가능하다는 결론이 나옴

세 가지 큰 카테고리로 나누기만 하면
이 세가지의 패턴으로 만들어 진다

user는 사람 또는 컴퓨터
controller(template)에서 다양한 이벤트나 인풋을 조작을 함

그 때 controller(template)는 model에 있는 데이터를 가지고 와서 가공한 다음 뷰에 보내고

뷰는 다시 user에게 보내줌

아니면 user가 어떤 입력을 하면 controller(template)가 입력을 model에 쓰는 형태

이렇게 유기적으로 돌아감

Django 개념

Web Browser ← user들이 사용하는 웹 브라우저
이 곳에서 어떤 이벤트가 발생하게 됨
url을 클릭을 한다든지, form에 데이터를 입력하는 등 다양한 액션이 발생함
그런 action이 발생하면 django 서버로 들어옴

그러면 우선 URL Dispatcher에서 우리들이 요청한 url을 분석을 함
분석한 url에 적합한 view로 보내줌

View는 이제 사용자의 요청을 받아서 데이터베이스 어디에 접근해서 어떤 데이터를 가공을 해야될지를 알려주면

Model에서 실질적인 데이터베이스와 connection을 하고 데이터를 가지고 오게 됨
그러면 이제 데이터베이스에서 model로 다시 데이터를 보내줌
그러면 다시 model이 view에 실질적인 데이터를 보내주고
view가 실질적으로 우리들에게 보여줄 데이터를 template에게 전송해줌
그러면 template가 자바스크립트나 아니면 html 같은 다양한 형태의 유저 인터페이스를 만들어서 Web Browser로 넘겨주게 됨

이런 과정들을 복잡하게 거치는 이유는 특정 영역을 분리하는 게 중요하기 때문

프로젝트가 커질수록 각 영역을 담당하시는 분들이 따로 작업하는 게 훨씬 효율적이다

django 웹 프레임워크는 MVC 패턴을 이용한 이런 웹 프레임워크가 구성이 되어 있다

전체적인 장고의 구성은 다음과 같다.

장고라는 웹 프로젝트를 생성하면 그 안에는 다양한 파일들이 생성됨
녹색 파일이 우리가 실질적으로 다루게 될 파일들

middleware: 장고 뒤에서 다양한 처리들을 도와줌

브라우저에서 어떤 요청을 보내면
WSGI(web server gate interface)라는 녀석으로 신호가 들어오게 됨
사실 이 파일은 우리가 건드릴 필요는 없음
그냥 있다는 것만 알아두기
웹 서버와 django를 적절하게 결합을 시켜주는 역할
웹 서버에서 적절한 설정만 해주면 장고와 결합을 하게 됨
그래서 이 WSGI라는 gateway가 그 역할을 해주고 우리들은 나중에 이 장고 웹 프로젝트가 어디에 배포될지는 크게 신경 쓰지 않아도 됨

웹 서버로부터 신호가 들어오면 urls.py라는 파이썬 코드에서 받게 됨
urls.py는 정규표현식으로 구성이 되어 있음
정규표현식에 맞게끔 특정한 view로 보내주면 views.py가 바로 실질적으로 우리들이 파이썬 코드를 많이 작성할 부분이다.

이제 view에서 판단을 함
사용자 요청에 의해서 데이터베이스에 데이터를 입력을 하든지 아니면 데이터베이스로부터 데이터를 가지고 와서 사용자에게 리스트를 보여줄 건지 결정함
결정을 하면 model에 신호를 보냄

model은 데이터베이스로부터 어떤 데이터를 가지고 올 때 사실은 데이터베이스로부터 데이터를 가져와서 그 데이터를 다시 클래스에 넣고 우리는 그 클래스를 변수를 조정하게 됨

옛날에는 이 과정이 굉장히 복잡했었음 (model ~ database)

model에 우리가 변수를 지정하기만 하면 그 뒤에서 데이터베이스와 연결하는 부분은 Managers 라는 아이가 알아서 다 해줌. 그래서 우리들은 django를 사용하면서 따로 SQL Query를 작성할 필요가 없음. 우리는 변수만 담으면 편리하게 데이터베이스에서 데이터를 가져와서 view에서 가공을 할 수 있다.

이제 view에서 어떤 형태이든지 데이터베이스에 접근해서 데이터를 가공을 함
그런 다음에 이제 사용자에게 보여주기 위한 UI 작업을 해야 함
그러면 이제 우리들이 template를 만들어서 다시 웹 서버로 전송을 하게 됨

Template는 html 파일인데 html 파일 안에 우리가 로직을 삽입할 수 있음
로직은 control과 관련된 다양한 로직들
이 안에 대단히 복잡한 로직이 들어가 있는 건 아니구요
view에서 받은 데이터를 어떻게 html 파일에 잘 보여줄지에 대한 스크립트 파일들이 template에 담겨짐
그 때 우리들은 다양한 form을 작성하게 됨
html tag를 통해서 파일을 입력하고
우리가 게시물을 작성할 때 뜨는 form들은 forms.py라는 파일을 이용해서 손쉽게 다룰 수 있음
Form을 이용해서 Model과 Template에 있는 사용자들이 쓰는 UI가 아주 쉽게 관리 됨
Form이 django에서 굉장히 편리하게 구성이 된다 라는 것을 알고 있으면 됨

그래서 view에서 데이터를 구해준 것을 template가 사용자 유저 인터페이스에 적절하게 구성을 해주고 그 구성된 정보가 다시 웹 서버로 감

그럼 웹 서버는 그 정보를 사용자에게 보내줌

이게 장고가 동작하는 전체적인 시스템이다
장고 웹 프로젝트가 구동하는 방식을 설명했던 것이다.

하나의 프로젝트가 하나의 웹 사이트라고 생각하면 됨.

의미 있는 하나의 기능들을 앱으로 관리할 수 있음.
하나의 어플리케이션이 됨.

기능들을 각각 분리해서 프로그래밍을 할 수 있고
다른 프로젝트에서 하위 어플리케이션으로 사용될 수 있음

그런 거를 쉽게 할 수 있도록 어플리케이션이 분리되어 있음

django-adimin을 통해서 프로젝트 생성
tutorial 이라는 이름의 프로젝트를 만들어보자.
django-admin startproject tutorial
manage.py 실행파일
tutorial이라는 이름으로 폴더가 하나 생김
그 폴더 안에 settings.py, urls.py, wsgi.py 파일이 만들어짐
settings.py: 전체 프로젝트를 관리하는 설정들이 담겨 있는 파일

그 후에 바로 프로젝트 하위 앱을 만들게 됨
앱은 manage.py를 이용해서 생성할 수 있음
$ python manage.py startapp community(앱이름)
community 라는 이름의 앱이 생김

admin.py: 관리자 권한을 가지고 있는 사용자가 볼 수 있는 페이지에 관련된 내용을 다룸

models.py: 데이터베이스와 관련된 다양한 역할 수행

views.py: 데이터베이스로부터 가지고 온 데이터를 적절하게 가공하는 역할

migrations/: 데이터베이스와 관련된 폴더

settings.py

프로젝트 환경 설정 파일

DEBUG: 디버그 모드 설정

DEBUG = True 로 하면 어떤 오류인지 보여줌. 개발 하는 단계에서는 True로 하기.

서비스 배포할 때는 False로 해야함

INSTALLED_APPS: pip로 설치한 앱 또는 본인이 만든 app 추가

MIDDLEWARE_CLASSES

TEMPLATES

manage.py

프로젝트 관리 명령어 모음

주요 명령어
startapp - 앱 생성
runserver - 서버 실행
createsuperuser - 관리자 생성
makemigrations app - app의 모델 변경 사항 체크
migrate - 변경 사항을 DB에 반영
shell - 쉘을 통해 데이터를 확인
collectstatic - static 파일을 한 곳에 모음

0개의 댓글