본문 바로가기
Django/Django개념

Django를 사용하는 이유

by hyun-am 2020. 11. 17.

Django란?

파이썬으로 만들어진 무료 오픈소스 웹 애플리케이션 프레임워크(web application framework)입니다. 쉽고 빠르게 웹사이트를 개발할 수 있도록 돕는 구성요소로 이루어진 웹 프레임워크 입니다.

모델-뷰-컨트롤러 패턴을 따르고 있습니다. 또한 고도의 데이터 베이스 기반 웹사이트를 작성하는 데 있어서 수고를 더는 것이 장고의 주된 목표입니다. 장고는 컴포넌트(Component)의 재사용성과 플러그인화 가능성, 빠른 개발등을 강조 하고 있습니다.

참조 링크 : https://ko.wikipedia.org/wiki/장고_(웹_프레임워크)

 

장고 (웹 프레임워크) - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 다른 뜻에 대해서는 장고 문서를 참조하십시오. 장고(Django, FAQ 발음으로는 "쟁고"(IPA: [ˈdʒæŋgoʊ])[2])는 파이썬으로 작성된 오픈 소스 웹 프레임워크로, 모델-

ko.wikipedia.org

 

Django만의 특징

 

MVC 패턴 기반의 MVT 기반

다른 곳에서는 MVC패턴이라면 Django에서는 MVT(Model-View-Templates)기반입니다. 여기서 모델(Model)은 테이블을 정의합니다. 예를 들면 데이터에 대한 접근, 검증, 작동과 데이터 사이의 관계를 정의합니다. 그리고 뷰(View)의 역할은 애플리케이션의 제어 흐름 및 처리 로직을 정의합니다. 또한 뷰는 HTTP 응답(response)를 반환해야 하며 응답의 종류는 웹 페이지, 리디렉션, 문서 등의 다양한 형태가 가능합니다. 장고에서는 자주 사용되는 형태의 뷰를 패턴화 하여 추상화 해둔 재사용 가능한 뷰들을 내장해 놓았는데 이것을 보고 제네릭 뷰라고 합니다. 이것에 대한 내용은 나중에 설명하겠습니다. 마지막은 템플릿(Template) 입니다. 이것은 데이터가 어떻게 표시되는 지를 정의합니다. 템플릿을 통해 사용자에게 실제로 보여지는 웹 페이지나 문서를 다룹니다.

 

⭐️ MVC 패턴이란?

이것은 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴입니다. 이 패턴을 성공적으로 사용하면, 사용자 인터페이스로 부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있습니다.

객체 관계 매핑(ORM)

객체 관계 매핑(Object-relational mapping)이란 데이터베이스와 객체 지향 프로그래밍 언어 간의 호환되지 않는 데이터를 변환하는 프로그래밍 기법입니다. 객체 지향 언어에서 사용할 수 있는 "가상" 객체 데이터베이스를 구축하는 방법입니다. 예를들면 데이터베이스를 SQL문 없이 파이썬 언어를 통해 처리할 수 있습니다. 또한 모델에서 보면 데이터 베이스를 선언할때도 마찬가지로 SQL없이 데이터베이스를 만드는 것을 확인할 수 있습니다.

 

다음과 같은 SQL문을 다음과 같이 바꾸어서 설명할 수 있습니다. 아래는 SQL문으로 유저라는 테이블에 있는 모든 값을 가져오라는 것입니다.

SELECT * FROM USER;

이것을 장고 ORM 으로 표현하면 다음과 같이 표현할 수 있습니다.

User.objects.all()

그 밖에도 다양한 표현이 있는데 이것에 대해서는 다음에 설명 하도록 하겠습니다.

 

자동으로 구성되는 관리자 화면

장고는 웹 서버의 콘텐츠, 즉 데이터베이스에 대한 관리 기능을 위하여 프로젝트를 시작하는 시점에 기본적으로 관리자 화면을 제공합니다. 이것은 또한 사용자 입맛대로? 커스터마이징도 할 수 있습니다.

관리자 화면의 예시는 다음과 같습니다.

우아한 URL 설계

웹 프로그래밍에서 URL 디자인은 필수인데, 장고에서는 유연하면서도 강력한 기능을 제공해서 직관적이고 쉽게 표현할 수 있습니다. 예를 들면 앱단위로 url을 관리해서 쉽게 표현하고 사용 가능합니다.

자체 템플릿 시스템

settings.py에서 템플릿 경로를 지정해 주어서 내부적으로 확장이 가능하고 디자인이 쉬운 강력한 템플릿 시스템을 가지고 있습니다. 또한 이것을 통해 화면 디자인과 로직에 대한 코딩을 분리하여 독립적으로 개발을 진행할 수 있습니다.

캐시 시스템

컨텐츠를 동적으로 작성하는 것은 정적 컨텐츠를 제공하는 것 보다 많은 연산을 필요로 하기 때문에 느립니다. 장고는 유연한 캐싱을 제공하여 렌더링된 페이지 전체 또는 일부를 저장하여 필요할 때를 제외하고 다시 렌더링하지 않도록 할 수 있도록 하는 기능을 제공합니다.

먼저 캐시 시스템은 간단하게 설명하자면 컴퓨터 과학에서 데이터나 값을 미리 복사해 놓는 임시 장소를 뜻합니다. 캐시는 캐시의 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용합니다.

장고에서 캐시는 다음과 같은 과정을 통해 진행합니다.

  1. URL이 오면, 그 페이지를 먼저 캐시에 찾는다.
  2. 캐시에 있다 → 캐시된 페이지를 보여줍니다.
  3. 캐시에 없다 → 페이지를 가져오고 캐시에 저장하고, 보여줍니다.

참고 링크 : http://milooy.github.io/TIL/Django/django-cache.html#장고의-캐시

 

Django Cache | Today Yurim Learned

Django Cache 캐시 캐시: 고비용의 계산 결과를 저장해둠으로써 다음 번에는 실행하지 않아도 되도록. 순서 URL이 오면, 그 페이지를 먼저 캐시에서 찾는다. 캐시에 있다 -> 캐시된 페이지를 보여준다

milooy.github.io

다국어 지원

장고는 동일한 소스코드를 다른 나라에서도 사용할 수 있도록 텍스트의 번역, 날짜/시간/숫자의 포맷, 타임존의 지정 등과 같은 다국어 환경을 제공합니다. 이것또한 settings.py에서 설정할 수 있습니다.

 

 

참고 자료 : https://developer.mozilla.org/ko/docs/Learn/Server-side/Django/Introduction

 

Django 소개

Django의 첫번째 문서에서는 "Django가 뭐지?"라는 질문에 답해보고, Django 웹 프레임워크의 특별한 부분에 대해 전반적으로 살펴봅니다. 우리가 이 수업에서 자세히 다루지는 않을 고급 기능들까

developer.mozilla.org

 

'Django > Django개념' 카테고리의 다른 글

models.py 살펴보기  (0) 2020.11.18
settings.py 살펴보기  (0) 2020.11.17
Django를 이용한 웹 API 만들기  (0) 2020.10.26
002. Django App 만들기  (0) 2019.08.15
001. Django project 시작하기  (0) 2019.08.15

댓글