최근에 개발을 시작한 사람들 중 많은 사람들이 Python을 사용해 봤을 것이다.
또한, 대중적인 Python을 이용하여 웹 개발을 시작하는 사람들도 많이 생겨났다.
[사진 : Stackoverflow의 프로그래밍 언어 질문 수의 동향 그래프]
최근에 인기를 끌고있는 Python에서는 가장 대중적인 웹 개발 프레임워크가 3개 존재하는데,
Flask / Django / Fast-api가 있다.
해당 글에서는 이 중 Django에 대하여 알아볼 것이다.
Django의 홈페이지에서 소개하는 글이다.
Django는 소개에서 보는 것처럼 보다 적은 코드로 웹앱을 빠르게 개발하는 것을 지향하고 있다.
또한, 다른 프레임워크들과는 다르게 Django는 Front-End, Back-End를 모두 개발할 수 있는
Full-Stack 프레임워크이며, MTV(Model/Template/View)라는 특수한 패턴을 기반으로 개발을 하게 된다.
[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이 없으면 프로젝트 이름의 폴더를 생성하고 그 내부에 프로젝트 파일과 폴더를 생성한다.
위의 사진과 같이 파일과 폴더가 생성됐다면 성공한 것이다.
그리고 현재 폴더에서 Terminal에서 다음의 명령어로 서버 실행이 가능하다.
# 서버 실행
$ python3 manage.py runserver
위 사진과 같이 터미널에서 표기되면 서버를 실행하는 데 성공한 것이다.
기본적으로 8000번 포트에서 실행이 되며 브라우저에서 127.0.0.1:8000 또는 localhost:8000으로 접속 가능하다.
해당 url로 접속 후 위 화면이 보인다면 프로젝트를 시작할 기반을 생성하는 것에 성공한 것이다.