Django를 사용하면서 Django를 왜 쓰는가? Djanog는 어떤 특징이 있는가란 궁금증을 가진 적이 없었다. 생각해보면 왜 쓰는가에 대한 이유를 알아야지 적합한 웹 프레임워크들을 사용할 수 있는데... 그런 반성의 의미에서 Django는 어떤 웹프레임워크인지 알고자 한다.
1. Django의 특징
1.1. MTV 구조
1.1.1. View
urlpattern에 알맞은 호출이 들어오면 요청은 view로 들어오게 된다. view는 웹 클라이언트로부터 HTTP요청을 수신하고 HTTP 응답을 되돌려준다. 이곳에서 DB에 접근하고(ORM을 통한 데이터 쿼리) Template을 렌더링 하기 위해 자원들을 활용한다.
1.1.2. Model
Model에서는 파이썬 객체를 통해 데이터를 관리하고 쿼리한다. Django에서는 ORM을 제공하는데 테이블들을 Class 형태로 데이터의 구조를 정의한다. 일반적으로 모델은 테이블에 매핑된다.
1.1.3. Template
Template은 파일의 구조나 레이아웃을 정의하고, Template을 통해 데이터를 로드하고 랜더링 한다. 또한 DTL(Django Template Language)을 통해 HTML 페이지를 편하게 랜더링 할 수 있다.
1.2 다양한 기능들을 제공
Django는 다양한 기능들을 제공한다. 그 중에서 강력한 Admin 기능과 보안 기능, Debug 기능을 살펴보자
1.2.1. Admin 페이지
Django에서는 개발에 거의 시간을 들이지 않아도 되는 관리자 페이지를 제공한다. 그리고 이 Admin 화면은 Customize가 가능하다.
1.2.2. 보안
Django는 제법 다양한 공격을 방지할 수 있는 방법을 이미 구현해 놨다. XSS나 CSRF, SQL 인젝션 방지 등의 기능을 구현해 놨다. 자세한 사항은 여기를 참고
Django에서는 개발환경에서 Debug Toolbar나 Django Extensions Debugger를 통해 다양한 디버그 기능을 제공하고 있다.
Django에서는 App을 패키징하여 여러 프로젝트에서 사용할 수 있게 할 수 있다. 이는 Python의 핵심 가치와도 맞닿아 있다. 앱을 재사용하는 방법 등은 아래의 사이트를 참고하자
- https://docs.djangoproject.com/ko/4.1/intro/reusable-apps/https://imdona.tistory.com/m/42
- https://imdona.tistory.com/m/42
2. Django의 단점
- Django의 ORM은 양날의 칼이다. 최적화를 신경쓰지 않으면 성능 이슈가 발생할 수 있다.(이건 SQL도 마찬가지이긴 하다.)
- 실시간 서비스(스트리밍, 채팅)등에는 맞지 않을 수 있다.
- 개발 규모에 따라서는 Flask가 나은 선택일 수 있다.
참고
1. https://developer.mozilla.org/ko/docs/Learn/Server-side/Django/Introduction
2. https://docs.djangoproject.com/en/4.1/
3. https://blog.lxf.kr/2018-11-19---why-or-not-django/
'Django' 카테고리의 다른 글
[DRF] HyperlinkedModelSerializer 살펴보기 (0) | 2023.01.12 |
---|---|
[DRF] ModelSerializer 살펴보기 (0) | 2023.01.11 |
Gunicorn에 대해 알아보자. (0) | 2022.12.23 |
[Pytest] - TestRunner 설정하기 (0) | 2022.12.19 |
[Pytest] - django-dotenv 와 pytest-dotenv 오류 (0) | 2022.12.19 |