1. 장고 프롤로그
1) 마감 시간이 있는 완벽주의자를 위한 웹 프레임워크
2) 바퀴를 다시 발명하지 마라
3) 시간이 가장 큰 비용이니, 장고를 누리고 시간을 아껴라
4) 고유한 개념 및 데이터는 한 곳에.
5) 중복(redundancy)은 X, 정규화(Normalization)은 O
2. 장고의 설계 철학
1) 일반
(1) 신속한 개발 : 21세기 웹 프레임워크의 핵심은 지루한 부분을 빠르게 만드는 것
(2) 느슨한 결합 : 장고 스택의 근본적인 목표는 "느슨한 결합, 탄탄한 응집"
(3) 적은 코드 : 반복을 줄이고, 가능한 최소한의 코드를 사용하며, 다른 언어/프레임워크의 틀에 박힌 코드를 배제
(4) 반복하지 않기 : 중복은 줄이고, 정규화를 지향 / 파이썬의 특성을 활용하여 반복을 축소 / 반복되는 함수 기반 뷰를 클래스 기반 뷰로 축소
(5) 명시적인 것이 묵시적인 것보다 낮다 : PEP 20에 기술된 Python 핵심 원칙
2) 뷰(View)
(1) 단순성 : 뷰를 작성하는 것은 함수를 작성하는 것만큼 단순하고 직관적이어야한다.
(2) 요청 객체의 사용 : 요청(request) 객체 (HttpRequest 타입)는 장고에서 자동으로 생성하여, 뷰에 명시적으로 전달
(3) 템플릿 시스템과의 느슨한 결합 : 명시적으로 템플릿 시스템을 호출하여, 필요한 문자열을 렌더링
(4) GET과 POST를 구분 : 일반적으로 조회 목적으로는 GET 방식을, 생성/수정/삭제 목적으로는 POST 방식을 사용
3) URL 설계
(1) 뷰와 URL의 느슨한 결합 : 뷰 구현에 직접 URL을 매핑하지 않고, URL 매핑을 뷰 구현과 따로 처리
(2) 엄격한 URL 패턴 : URL 문자열 패턴에 정규표현식을 지원하기에 보다 엄격한 URL 패턴이 가능
(3) 모범 사례를 장려 : 보다 가독성 높게 URL 패턴을 정의할 수 있도록 도와줌
(4) 명확한 URL : 검색엔진이 혼동하지 않도록 URL을 정규화하는 옵션이 기본 활성화
4) 템플릿 시스템
(1) 템플릿 언어는 간결해야 한다 : 프로그래머가 아닌 디자이너가 작성하는 것을 전제로 한다.
(2) HTML 조합에서 자주 사용 : 브라우저 요청에서는 HTML 문자열 응답이 대부분 / render API를 통해 손쉽게 HttpResponse 응답을 만들어낸다.
(3) 다양한 문자열을 조합할 수 있도록 설계 : 복잡한 문자열을 단순히 언어의 기본 기능만으로 조합하는 것은 어려움
(4) 템플릿 파일은 HTML 파일이 아니다 : HTML 포맷 뿐만 아니라, 어떠한 문자열 조합에도 활용될 수 있다.
(5) 스파게티 개발을 원척적으로 봉쇄 : Stupid 템플릿 시스템으로 템플릿 시스템은 구현이 아닌 표현을 제어하는 도구
(6) 안전과 보안 : 템플릿 시스템은 DB 레코드를 삭제하는 명령과 같은 악의적 코드를 포함할 수 없어야한다.
(7) 중복을 배제 : 대다수 동적 웹사이트는 공통 헤더, 푸터, 네비게이션 바와 같은 공통 디자인을 가진다.
템플릿 상속을 통해 중복을 제거할 수 있다, 상속은 여러 계층으로 이뤄질 수 있다.
(8) 확장성 : 템플릿 태그/필터 문법은 단순하기에 HTML을 읽고 쓸 수 있다면 손쉽게 활용 가능
써드파티 템플릿/필터 라이브러리를 통해, 템플릿 시스템은 더욱 확장된다.
5) 모델(Model)
6) 데이터베이스 API
'파이썬 웹개발' 카테고리의 다른 글
[장고 설계철학으로 시작하는 파이썬 장고 입문] 4. (실습) django template 상속, bootstrap5 적용 (0) | 2024.01.20 |
---|---|
[장고 설계철학으로 시작하는 파이썬 장고 입문] 3. (실습) django models.py 활용 DB 연결 (0) | 2024.01.19 |
[장고 설계철학으로 시작하는 파이썬 장고 입문] 1. django 프로젝트 시작 (1) | 2024.01.17 |
[GIT 활용] vscode 활용 git에 프로젝트 폴더 전체 올리기 (0) | 2024.01.16 |
[Django web app 생성] 5. django로 web application 삭제, 수정 기능(delete, update) 구현 (1) | 2024.01.16 |