본문 바로가기
Framework/Django

[Django] Django란?

by dev_ss 2023. 2. 6.

최근에 개발을 시작한 사람들 중 많은 사람들이 Python을 사용해 봤을 것이다.

또한, 대중적인 Python을 이용하여 웹 개발을 시작하는 사람들도 많이 생겨났다.

 

<출처 : https://stackoverflow.blog/2023/01/26/comparing-tag-trends-with-our-most-loved-programming-languages/>

[사진 : Stackoverflow의 프로그래밍 언어 질문 수의 동향 그래프]

 

최근에 인기를 끌고있는 Python에서는 가장 대중적인 웹 개발 프레임워크가 3개 존재하는데,

Flask / Django / Fast-api가 있다.

 

해당 글에서는 이 중 Django에 대하여 알아볼 것이다.

 

출처 : https://www.djangoproject.com/

Django의 홈페이지에서 소개하는 글이다.

 

Django는 소개에서 보는 것처럼 보다 적은 코드로 웹앱을 빠르게 개발하는 것을 지향하고 있다.

 

또한, 다른 프레임워크들과는 다르게 Django는 Front-End, Back-End를 모두 개발할 수 있는

Full-Stack 프레임워크이며, MTV(Model/Template/View)라는 특수한 패턴을 기반으로 개발을 하게 된다.

 

<출처 : https://developer.mozilla.org/ko/docs/Learn/Server-side/Django/Introduction#django%EB%9E%80>

[HTTP Request가 MTV 패턴에서는 어떠한 단계로 처리가 되는지 알아볼 수 있다]

 

 

 + 부가적으로 Django를 이용하여 Rest API를 개발하려면,

Django-Rest-Framework 또는 Django-Ninja라는 별도의 프레임워크로 구현이 가능하다.

 


Django는 다른 Python 기반의 프레임워크들과 차이점이 존재하는데 그에 따라 명확한 장단점을 가지고 있다.

 

Pros : 

  • 뛰어난 보안성
    • 미들웨어에서 CSRF에 대비하여 토큰을 통하여 검증할 수 있다.
    • XSS 공격에 대비하여 개행 문자를 안전하게 치환할 수 있는 라이브러리가 존재한다.

 

  • 빠른 개발 속도
    • 다른 프레임워크에서는 직접 구현해야 할 것들이 라이브러리로 대부분 존재한다.

 

  • 많은 레퍼런스
    • 타 프레임워크에 비해 오래되었고 그에 따라 구할 수 있는 자료들이 많다.

Cons : 

  • 무거운 프레임워크
    • 많은 라이브러리 때문에 다른 프레임워크보다 상대적으로 성능(속도)이 떨어질 수 있다.

 

  • 복잡한 라이브러리
    • 많고 복잡한 라이브러리 구조로 기능들을 익히는데 어려울 수 있다.

Python 기반의 프레임워크이기 때문에, pip를 이용하여 간단하게 설치할 수 있다.

# Django 설치
$ pip3 install django

 

그리고 Django를 이용하여 프로젝트를 생성할 때에는 django로 명령어를 쓰는 것이 아닌, django-admin으로 실행한다.

 

# 새로운 Project 제작
$ django-admin startproject {project_name} .

프로젝트 이름 뒤에 Blank 후 Dot이 있는데, 현재 폴더 내에서 프로젝트 파일을 생성한다는 뜻이다.

Dot이 없으면 프로젝트 이름의 폴더를 생성하고 그 내부에 프로젝트 파일과 폴더를 생성한다.

<참조 : django 프로젝트 생성 파일>

 

위의 사진과 같이 파일과 폴더가 생성됐다면 성공한 것이다.

그리고 현재 폴더에서 Terminal에서 다음의 명령어로 서버 실행이 가능하다.

# 서버 실행
$ python3 manage.py runserver

<참조 : 서버 실행 후 터미널>

위 사진과 같이 터미널에서 표기되면 서버를 실행하는 데 성공한 것이다.

기본적으로 8000번 포트에서 실행이 되며 브라우저에서 127.0.0.1:8000 또는 localhost:8000으로 접속 가능하다.

<참조 : django 프로젝트 기본 화면>

해당 url로 접속 후 위 화면이 보인다면 프로젝트를 시작할 기반을 생성하는 것에 성공한 것이다.

반응형