221019 TIL Python의 Django

2022년 10월 TIOBE Index사이트 기준 프로그래밍 언어 순위 1등인 python의 웹 프레임워크인 Django에 대해 알아봤다. 

 

https://www.tiobe.com/tiobe-index/

어떤 언어로 웹 사이트 개발을 해야 할지 검색을 해보면 python이 빠지는 곳이 없을 정도로 인기가 많다.

그리고 개발자가 맨 처음 작성하는 코드인 Hello, world를 나는 파이썬으로 작성했다.

python을 학교 동아리에서 잠깐 배운적이 있어 정말 새로운 언어는 아니지만 이미 자바에 지배된 몸이라 python은 잊혀진지 오래다.

Python

python은 객체 지향 프로그래밍 언어이다.

그리고 인터프리터 언어이며 변수의 타입을 지정해주지 않아도 되는 동적언어이다.

인터프리터란, 프로그래밍 언어의 소스 코드를 바로 실행하는 컴퓨터 프로그램 또는 환경을 말합니다.

 

Python의 특징

파이썬은 러닝 커브가 낮은 걸로 유명하다. 그 이유는 파이썬의 문법이 인간의 사고와 유사하기 때문이다.

이렇게 문법이 쉽고 간결하기 때문에 개발 속도가 빨라 생산성이 높다. 그리고 자바에 비해 더 적은 코드로 더 많은 작업을 수행할 수 있어 복잡한 구문으로 인한 오류 발생을 줄일 수 있기 때문에 개발 속도가 빠르다.

 

 

Django

django란 쉽고 빠르게 웹사이트를 개발할 수 있도록 돕는 구성요소로 이루어져 있으며 무료 오픈소스 웹 애플리케이션 프레임워크이다.


Django의 특징

MTV패턴 (Model-Template-View)

  • MVC패턴을 기반으로 한 장고에서는 View를 Template, Controller를 View라고 부른다. 장고에서 View는 데이터를 가져오고 변형하는 컴포넌트인 반면에 Template은 데이터를 사용자에게 보여주는 컴포넌트이다.

 

ORM(Object-Relational Mapping, 객체 관계 매핑)

  • ORM은 객체와 관계형 데이터베이스를 자동으로 매핑해주는 것을 말하며 데이터베이스 시스템과 데이터 모델 클래스를 연결하는 다리와 같은 역할을 한다.
  • SQL 쿼리를 사용하지 않고도, 객체를 통해서 데이터베 에스를 다룰 수 있는 기술을 의미한다.

 

Admin 페이지 자동으로 구성

  • 데이터를 쉽게 생성, 변경할 수 있고 개발자가 별도로 관리 기능을 개발할 필요가 없다.
  • 하지만 웬만해서는 이 기본적으로 제공되는 admin 기능으로는 충분하지가 않아 커스텀을 해야 한다.

 

Django의 단점

속도가 느리다.

  • django는 속도가 느린데 django가 파이썬 기반 웹 프레임워크이기 때문이다. 파이썬은 인터프리터 언어이기 때문에 속도가 빠르지 않다.

 

관습이 없다

  • 자바와 달리 장고는 개발자들이 웹 개발을 위해 따를 수 있는 원칙 같은 것들이 존재하지 않는다. 그래서 CoC(Convention over Configuration)로 프레임워크를 작업했던 개발자를 어렵게 만든다.
  • 원칙이 존재하지 않기 때문에 모든 것들이 개발하면서 진행되야해서 개발 속도가 오히려 늦어질 수 도 있다.

 

CoC란?

CoC(설정보다 관례)는 소프트웨어 개발자가 정해야 하는 수많은 결정들을 줄여주고 단순성을 확보하면서도 유연함을 잃지 않기 위한 설계 패러다임입니다.

프레임워크가 복잡해 지고 기능이 방대해짐에 따라 사용하기 위해서는 수많은 설정 파일과 세팅을 해야 하는 부담이 생겨났고 CoC는 이를 해결하기 위해 자주 사용하는 부분은 관례를 정하여 생략하고 이를 따르지 않을 경우에만 설정을 하도록 하고 있다