퓨어 장고 (Django Template 기반)
설명:
- Django의 기본 템플릿 시스템과 클래스 기반 뷰(CBV) 또는 **함수 기반 뷰(FBV)**를 사용.
- HTML, CSS, Django 템플릿 문법을 사용하여 백엔드와 프론트엔드가 강하게 결합.
- 데이터를 서버에서 처리하고, 렌더링된 HTML을 클라이언트로 보냄.
특징:
- 서버에서 직접 HTML 생성: 데이터를 뷰에서 처리하고 템플릿에 전달.
- Django 템플릿 문법 사용: {% for %}, {% if %}, {% url %}, {% static %} 등.
- JS 사용은 선택 사항: 간단한 프로젝트에서는 JS가 크게 필요하지 않을 수도 있음.
장점:
- 빠른 프로토타입 개발: 백엔드와 프론트엔드를 동시에 개발.
- 간단한 프로젝트에 적합.
- 서버사이드 렌더링이므로 SEO 친화적.
단점:
- 백엔드와 프론트엔드가 강하게 결합되어 있음.
- 복잡한 UI/UX 요구사항을 처리하기 어려움 (예: 실시간 데이터 업데이트, SPA).
Django Rest Framework(DRF) (API 기반)
설명:
- RESTful API를 생성하는 데 최적화된 Django 확장 도구.
- 백엔드와 프론트엔드가 완전히 분리됨.
- 데이터는 JSON 형태로 제공되고, 프론트엔드는 이를 받아서 **JS(React, Vue, 바닐라JS 등)**로 처리.
특징:
- 서버는 API만 제공: 클라이언트가 데이터를 요청하면 JSON 응답을 반환.
- 템플릿 문법 사용 불가: HTML 렌더링은 백엔드가 아닌 프론트엔드에서 처리.
- 프론트엔드가 데이터를 처리: 바닐라 JS, React, Vue 등의 프레임워크가 데이터를 렌더링.
장점:
- 백엔드와 프론트엔드 완전 분리: 유지보수와 확장성에 유리.
- 동적 웹 애플리케이션에 적합 (SPA, 실시간 데이터 등).
- 다양한 클라이언트 지원: 웹, 모바일, 외부 서비스에서 쉽게 API를 사용할 수 있음.
단점:
- 초기에 복잡성 증가: 백엔드와 프론트엔드를 각각 개발해야 함.
- 템플릿 문법 사용 불가: 백엔드에서 HTML 렌더링이 필요하면 DRF 방식과 호환되지 않음.
둘중 결정할 때
1) 프로젝트 목표
- 간단한 쇼핑 사이트를 구현하려는 경우:
- 퓨어 장고 방식이 더 적합
- 템플릿 시스템과 서버사이드 렌더링만으로 회원가입, 로그인, 상품 목록, 장바구니 등 기본 기능을 쉽게 구현할 수 있음.
- 프론트엔드가 복잡한 동적 웹사이트(예: SPA, 실시간 데이터, 대규모 인터랙션)인 경우:
- DRF 방식이 더 적합함
- 프론트엔드와 백엔드를 분리하여 API 기반으로 동작하게 하면 유지보수가 용이함.
2) 프론트엔드 기술 스택
- 템플릿 시스템을 사용하고 싶고, JS에 익숙하지 않다면:
- 퓨어 장고 방식 ㄱ
- 퓨어 장고 방식 ㄱ
- React, Vue 등과 같은 프론트엔드 프레임워크를 배우거나 사용할 계획이 있다면:
- DRF 방식 ㄱ
3) 확장성과 학습 목표
- 프로젝트를 빠르게 완성하고 싶다면 퓨어 장고가 유리
- 장기적으로 더 많은 기술 스택을 익히고 싶다면 DRF 도전