오늘도 개발

Django 개요 - 기본 개념, 프로젝트 세팅 본문

웹 프로그래밍/Django

Django 개요 - 기본 개념, 프로젝트 세팅

Sueeeeeee 2022. 6. 28. 21:11

1. Django란?

MVC(MTV) 패턴에 기반하여 웹사이트를 만들 수 있게 도와주는 프레임워크.

2. MVC 패턴과 MTV 패턴

MVC 패턴

MVC 패턴은 프로그램을 model, view, control(template) 모듈로 나누어 디자인하는 방법이다.

한 모듈로 모든 기능을 관리하는 것보다 유지보수가 쉽다.

 

  • Model : 데이터를 저장하는 모듈
  • View : 데이터를 유저에게 보여주는 모듈
  • Controller: 사용자 입력에 따라 Model과 View를 조작하는 모듈

MTV 패턴

Django는 MVC 패턴에 기반하여 웹사이트를 만들 수 있게 도와준다.

단, Django에서는 MVC 패턴을 MTV 패턴이라고 부른다.

 

  • Model : MVC의 Model 역할을 하는 모듈 (models.py)
  • Template : MVC의 View 역할을 하는 모듈 (template 폴더의 html 파일)
  • View : MVC의 Controller 역할을 하는 모듈 (views.py)

출처 : 위코드 강의 2주차 - [Django] Kickoff

3. Django 프로젝트 시작 - Project와 App

Django에서 말하는 Project는 웹사이트(ex. naver)이고

App은 웹사이트가 제공하는 기능(ex. blog, mall 등)이다.

출처 : 생활코딩 - 장고 앱 만들기

Project 생성 방법

django-admin startproject naver

 

App 생성 방법

python3 manage.py startapp blog

4. Django 프로젝트의 구성

위의 코드 실행 후 필요한 파일을 추가하면 다음과 같이 된다. 

 

1) /naver

- manage.py : django 명령을 할 수 있게 도와주는 파일(ex. 개발 서버 실행, 새 앱 만들기 등)

 

2) /naver/naver

프로젝트 전체에 걸쳐 사용할 패키지.

- settings.py : 환경설정을 저장하는 파일

- urls.py : 각 앱의 url이 모두 담겨있는 파일. 

- wsgi.py, asgi.py : 배포 관련 파일

 

3) /naver/blog

앱 패키지.

- migrations : 해당 앱의 마이그레이션 히스토리를 저장하는 디렉터리

- templates : HTML, CSS 파일을 저장하는 디렉터리

- models.py : 해당 앱에서 MVC의 Model 역할을 하는 모듈

- views.py : 해당 앱에서 MVC의 Controller 역할을 하는 모듈

- urls.py : 앱 내 url 패턴이 모두 담겨있는 파일 

5. Django의 라우팅과 URLconf - urls.py

urls.py는 장고의 라우터이다.

라우터는 요청받은 경로에 따라 적절한 함수를 연결해주는 프로그램이다.

 

urls.py는 URLconf를 사용하여 라우팅을 수행한다.

URLconf는 장고가 참조하는 노트라고 생각할 수 있다.

URLconf에는 장고 프로젝트에 사용할 경로가 쭉 적혀있고, 

각 경로 옆에는 해당 경로로 요청이 받으면 실행할 views.py의 함수명이 적혀있다.

 

장고는 어떤 경로로 요청이 들어오면 우선 URLconf를 확인한다.

요청된 경로가 URLconf에 적혀있지 않으면 오류를 낸다. 

요청된 경로가 적혀있으면 해당 경로 옆에 적혀있는 함수를 실행한다.

 

http://127.0.0.1:8000/blog/read/3에 접속하면 일어나는 일

 

  1. Django가 base URL(127.0.0.1:8000) 다음에 오는 blog 발견
  2. naver 패키지의 urls.py에서 'blog'와 매치하는 url pattern 서치->발견
  3. url pattern이 blog 패키지의 urls.py를 include한 것을 발견
  4. blog 패키지의 urls.py에서 'read/숫자'와 매치하는 url pattern 서치->발견
  5. “views.py”에서 read 함수 서치/실행
  6. 함수 실행 결과로 read.html 화면 보여줌

 

 

 

 

 

참고

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

생활코딩 - Python Django Web Framework - 5/14. Routing URLConf