TIL62. Introduction to Django

Jaeyeon·2021년 3월 23일
0
post-thumbnail

Django란 무엇인가?

  • 파이썬 기반의 무료 오픈소스 웹 애플리케이션 프레임 워크이다.
  • 장고를 이용하여 쉽고 빠르게 웹사이트를 개발할 수 있다.

왜 장고같은 웹 프레임워크를 사용하지?

  • 회원가입, 로그인, 로그아웃, 업로드, 다운로드등의 반복적으로 구현해야 하는 부분은 이미 만들어져있기 때문에 웹페이지를 빠르게 구현 가능하다.

MVC

Model
안전하게 데이터를 저장 (데이터 테이블을 의미함)

View
데이터를 적절하게 유저에게 보여줌
(모델에 있는 데이터를 유저에게 만들어서 보내줌 쉽게 말해 사용자 인터페이스)

Control
사용자의 입력과 이벤트에 반응하여 Model과 View를 업데이트
(데이터 처리 로직을 의미한다)

데이터, 사용자 인터페이스, 데이터 처리 로직을 구분해
한 요소가 다른 요소들에게 영향을 주지 않도록 설계하는 방식을 말한다.

MTV(Django)

  • 장고는 MVC를 기반으로 한 프레임 워크 이지만 장고에서는 MTV라고 부른다.

Model
데이터베이스에 저장되는 데이터를 의미한다.
excel과 같은 표의 형태로 정리하여 데이터베이스에 넣는다고 생각하면 된다.
원래 DB를 다루기 위해서는 SQL이라는 언어를 알아야하지만, 장고는 이 SQL을 몰라도 DB 작업을 가능하게 해주는 ORM을 제공하기 때문에 공부할 내용이 훨씬 적다.
쉽게 말해 데이터 저장 형태를 어떻게할지 설정하는 역할을 한다.

ORM이란?
Object-Relational Mapping의 약자로, SQL이라는 언어 대신 데이터베이스를 쉽게 연결해주는 방법.

Template
사용자에게 보여지는 부분을 의미한다.
(모델에 있는 데이터를 유저에게 만들어서 보내줌 쉽게 말해 사용자 인터페이스)
(위코드에서는 다루지 않는다)

View
웹 요청을 받고, 전달받은 데이터들을 해당 어플리케이션의 로직으로 가공하여 그 결과를 템플릿에 보내준다.
데이터를 가공하는 처리를 해야한다 싶으면 뷰에서 함수를 작성하면 된다.


Django의 개념

1. 웹브라우저

클라이언트가 url클릭 / 데이터 입력등 액션이 발생하면 장고 서버로 들어갈거임

2. url Dispatcher

입력한 url을 분석후에 view로 보내줌
(은행의 청원경찰 같은 역할 어느 창구로 갈지)

3. view

사용자의 요청을 받아서 어떤 테이블(모델)에 접근할지 어느정도 양의 데이터를 갖고올지 결정 후 모델에 접근

4. Model & Database

데이터베이스와 커넥션을하고 필요한 데이터를 가져온 후 다시 view로 전달
(ORM으로 DB와 소통)

5. View

데이터를 가공한 후 프론트 엔드로 보낸다.

조금 더 구체적인 Django 개념

짙은 녹색 부분의 파일들이 django를 이용하는 개발자가 실질적으로 다루어야 하는 파일들이다.

1. web browser

url을 클릭하거나 데이터 입력을 하여 서버에 요청을 한다.

2.WSGI.py

WebServerGatewayInterface의 약자로서
웹 서버와 장고를 적절히 결합 시켜줌 (따로 건드릴 필요없음)

3. urls.py

정규표현식에 맞게 view로 보내줌

4. view.py

실질적으로 내가 많이 다룰 부분이다.
view에서 데이터베이스를 입력할지 리스트를 보여줄건지 여러 역할을 결정한다.

5. models.py

DB로부터 데이터를 가져올 때 class에 넣는다.

6. template

view에서 받은 파일들을 UI로 만들어 시각화 한다.

7. web server

받은 파일을 클라이언트에게 다시 보내준다.

Project 와 App

  • Project : 하나의 웹사이트를 의미한다.

  • App : 의미 있는 하나의 기능을 앱으로 관리할 수 있다. (블로그,쇼핑몰 등)

  • 프로젝트 생성하는 법: django-admin startproject tutorial

  • app 생성하는 법: ./manage.py startapp community

settings.py : 프로젝트 환경 설정

  1. Debug : 디버그 모드 설정 (개발중에는 True로, 배포할때는 False로)
  2. INSTALLED_APPS: pip로 설치한 앱 또는 본인이 만든 app추가
  3. MIDDELWARE_CLASSES: request와 response 사이의 주요 기능 레이어 (크게 신경 쓰지 않아도 된다)
  4. TEMPLATES: django template 관련 설정, 실제 뷰 등의 기능을 다루는 설정 파일이다.
  5. DATABASES: 데이터베이스 엔진의 연결 설정
  6. STATIC_URL: 정적파일의 URL

manage.py : 다양한 파일 모음

주요 명령어 모음

  • startapp : 앱생성
  • runserver : 서버 실행
  • createsuperuser : 관리자 생성
  • makemigrations app : app의 모델 변경사항 체크
  • migrate : 변경사항을 db에 반영
  • shell : 쉘을 통해 데이터를 확인
  • collectstatic : static 파일을 한 곳에 모음
profile
생각하는 개발자 되기

0개의 댓글