2 minute read

  • Python 기반의 풀스택 웹 프레임워크

  • 기본 제공 목록

    • ORM

    • 관리자 페이지

    • 자주 사용되는 로직 묶음

    • 만들어진 앤티티에 따라 인증 및 권한 목록 알아서 제공

    • 캐싱

    • 데이터 직렬화

  • 도움이 되는 소프트웨어

    • 완결성있는

      개발자들이 개밸하고 싶은 거의 모든 것을 개발하는 데 도움 줌. 결과물은 일부일 뿐이며 도달하고자 하는 목표 지점은 같기에 일관된 디자인 룰 제공하여 광범위한 최신 문서 제공

    • 다용도인

      대부분의 기능 제공하지만, 필요하다면 다른 컴포넌트들을 사용하기 위해 확장 가능

    • 안전한

      아이디, 비밀번호 관리, SQL 인젝션, 크로스사이트 스크립팅, 크로스사이트 요청 위조, 클릭 하이제킹 과 같은 보안 취약점 보완할 방법 기본적으로 제공

    • 확장성있는

      컴포넌트 기반의 “shared-nothing”아키텍쳐(각각의 아키텍쳐가 독립적이어서 필요하다면 교체 및 변경할 수 있는) 사용하기 떄문에 어떤 레벨에서든 하드웨어 추가 해 대응 가능

    • 유지보수가 쉬운

      코드가 유지보수가 쉽고 재사용하기 좋게끔 하는 디자인 원칙들과 패턴들 이용하여 작성됨. Don’t Repeat Yourself(DRY)원칙 상요해서 코드 줄임 관련 기능들 재사용 가능한 application으로 그룹화, 더 낮은 레벨에서 관련된 코드들 모듈로 만듦(MVC와 유사)

    • 포터블한

      파이썬으로 작성되며, 특정한 서버 플랫폼에 얽매이지 않음

  • 독선적이자 관용적

    독선적인 프레임워크들은 특징은 “올바른 방법”에 대한 분명한 의견을 가지고 있고 그에 대한 빠른 개발방법을 제시하며 문서화가 잘 됨. 하지만 “올바른 방법”을 벗어나면 유연하지 못한 해결책 제시

    관용적인 프레임워크들은 컴포넌트를 활용하고 붙이며 “올바른 방법”에 대한 제약이 없음. 개발자가 적절한 도구를 이용하기 쉽게 만듦. 하지만 직접 그 컴포넌트들을 찾아야 한다는 수고를 해야 함

    Django는 웹 개발 작업을 다루는 컴포넌트 세트와 그 세트를 다루기에 두 가지의 방법을 둘 다 제공.

    비결합 구조이기 때문에 옵션들 중 선택하거나 새로운 방법 만들 수 있음

  • 코드 생김새

    • MVT 패턴

      • 요소

        • URLS(urls.py)

          URL mapper로 저장되며 요청 URL을 기준으로 HTTP요청을 적절한 뷰로 보내주기 위해 사용되며 URL에 나타나는 특정한 문자열이나 숫자 패턴 일치시켜 데이터로써 뷰 함수에 전달

        • View(views.py)

          HTTP 요청을 수신하고 HTTP 응답을 반환하는 요청 처리 함수. Model을 통해 요청을 충족시키는데 필요한 데이터에 접근. 템플릿에게 응답의 서식 설정 맡김 view는 분리시키는 것이 리소스 유지보수하기 쉬움

        • Models

          데이터 구조 정의하고 DB의 기록 관리(추가, 수정, 삭제) 하고 쿼리하는 방법을 제공하는 파이썬 객체 DB와 연동이 편하게 만들어짐 DBMS는 SQLite를 사용하게 되어있으며, Django Admin 기능을 통해 쉽게 조회/편집 가능

        • Templates

          파일 구조나 레이아웃을 정의 실제 내용을 보여주는 데 사용되는 플레이스 홀더를 가진 텍스트 파일 View는 HTML 템플릿 이용하여 동적으로 HTML페이지 만들고 모델에서 가져온 데이터로 채움

      • MVC 패턴과의 차이

        View는 사용자에게 보여지는 데이터를 설명하며 Templates는 어떻게 데이터가 보여질 지를 위임 Controller는 프레임워크 자체. 장고 URL 설정에 따라 요청을 적절한 View에게 전달.

    • 전형적인 웹 사이트

      1. 웹 브라우저(또는 다른 클라이언트)로부터 HTTP 요청 기다림

      2. 요청 받을 시 URL과 POST 데이터 or GET 데이터의 정보레 기반하여 요구사항 알아냄

      3. 무엇이 필요한 지에따라 DB로부터 정보 읽거나 쓰고, 필요한 다른 작업 수행

      4. 클라이언트에 응답 반환. 주로 동적인 HTML 페이지 생성하면서 응답

Categories:

Updated: