[Django] Intro

황인용·2020년 1월 23일
1

Django

목록 보기
1/13

Django

Djang(장고)는 파이썬으로 작성된 오픈 소스 웹 어플리케이션 프레임워크(Framework)로, 모델-뷰-컨트롤러(MVC)패턴을 따르고 있다.
즉, 고도의 데이터 베이스 기반 웹사이트를 작성하는데 활용된다.

Django Framework의 특징

  • 비교적 쉬운 언어인 Python을 기반으로 사용

  • 개발속도가 빠르고 코드 완성도를 높게 유지 가능

  • 웹 어플리케이션이 제공되어야 하는 사용자 인증, 사용자 관리등을 기본적으로 구현가능

  • MVC(Model-View-Controller)패턴 기반의 MVT(Model-View-Template)
    - Model : 데이터를 의미, ORM방식을 사용. SQL구분을 직접 사용하지 않고 파이썬객체로(object)로 접근

    • View : 데이터 입력을 받거나 표시하는 텀포넌트
    • Template : 사용자에게 보여지는 View에 해당
  • ORM(Object-Relational-Mapping)기능지원으로 파이썬과 데이터베이스의 연동을 쉽게 하여 테이블을 객체와 연결해서 Query문을 사용하지 않고도 CRUD할 수 있다.

image.png

  • routing(urls.py) : URL 파싱 후 View에 전달
  • View(views.py)
    : URL 라우팅 규칙을 처리하는 오브젝트 -URL 디스패치
    (MVC의 V와 상관이 없다. Template가 V에 가깝다. Controller도 아니다. Controller는 Django가 그 역할을 한다)
    • Model로 부터 데이터를 수집(데이터는 오브젝트(Dictionary)형태로 전달받음)
    • 수집한 데이터 오브젝트는 Template으로 처리
  • Template
    - HTML, Presentation Layer 담당
  • Model
    : Model 오브젝트는 DB조작을 쉽게 해준다. ORM(Object Relational Model)
  • Database
    : Data 저장소, persistent 하게 데이터를 읽고, 쓰는데 Model을 사용

Django 동작 흐름

image.png

  1. 웹 브라우저에서 이벤트 발생 시
    (ex. 특정 url 클릭, form에 data 입력 등의 액션)
    Django 서버로 request(이벤트에 대한)가 들어온다
  2. Django 서버로 들어온 이벤트에 대해 URL Dispatcher가 URL을 분석해서 적합한 View로 요청을 보낸다.
  3. View는 사용자 요청을 받아 Database의 어디에 접근해서 어떤 data를 가공할 건인지 Model에게 알려준다
  4. Model은 Database와 연결하여 필요한 Database 연산을 처리한다.
  5. Database가 다시 Model로 결과값을 보내주면 Model이 이것을 View로 전달한다
    View는 우리에게 보내줄 데이터를 다시 Template에게 전달한다
  6. Template는 .js나 .html과 같은 페이지를 만들어서 웹브라우저에게 넘겨준다

image.png

Frontend-Backend Process

image.png

  1. 브라우저의 Request
  2. Server는 이 요청을 Database에 전달
  3. Database로부터 정보를 얻어옴
    ( 이때, 전달되는 정보를 Query Object라고 함 )
  4. Database로부터 받은 Query를 브라우저가 이해할 수 있게 JSON,XML등의 데이터 타입으로 바꿔서 Response

Query

  • Database로부터 받은 '원하는 조건의 데이터'
  • 브라우저가 바로 이해할 수 없고, 브라우저가 이해할 수 있는 데이터(JSON, XML등)로 바꿔서 Response를 보내줘야함

JSON(JavaScript Object Notation)

  • JavaScript Object Notation의 약자
  • JavaScript 객체 표기법
  • 데이터를 JavaScript가 이해할 수 있는 객체 형식으로 표현하는 것

JSON Example

{users:[
          {
            name: ['Bob', 'Smith'],
            age: 32,
            gender: 'male',
            interests: ['music', 'skiing']
          },
          {
            name: ['Sally', 'Kim'],
            age: 27,
            gender: 'female',
            interests: ['coffee', 'cosmetics']
          }
        ]}

장고 기본 구조

image.png

Manage.py

전반적인 Project관리를 도와주는 Module.
이 스크립트로 다른 설치작없이 컴퓨터에서 웹서버 실행이 가능하다

  • 주요명령어
    - startapp : 앱 생성
    • runserver : 서버 실행
    • createsuperuser : 관리자 생성
    • makemigrations app : app모델의 변경사항 체크
    • migrate : 변경사항을 DB에 반영
    • shell : 쉘모드 진입. 쉘을 통해 데이터를 확인가능
    • collectstatic : static 파일을 한곳에 모음.

views.py

views.py는 project의 로직을 담당하는 파일

migrations 디렉토리

models.py파일에 정의한 테이블 구조를 manage.py의 makemigrations 옵션을 통해 생성되는 파일이 저장되는 디렉토리

models.py

models.py는 django의 기능중 하나인 ORM과 관련되어 있는 파일.
Database의 테이블을 정의하는 파일.

Setting.py

Setting.py는 프로젝트 환경설정에 대한 내용을 담고 있다.

  • Debug
    디버그 설정 개발시에는 True값으로 지정해놓고 실제 서비스 배포시에는 False로 설정
  • INSTALLED_APPS
    pip로 설치한 App 또는 본인이 만든 App추가한다
  • MIDDLEWARE_LCASSES
    request와 response사이의 주요 기능 레이어(인증, 보안관련 내용을 다룸)
  • TEMPLATES
    Django Template관련 설정, 실제 뷰(HTML)를 관리
  • DATABASES
    데이터베이스 엔진의 연결 설정
  • STATIC_URL
    정적파일의 URL(CSS, JavaScript, Image 등)

urls.py

urls.py는 이름대로 url경로에 대한 부분. 예를들어 user라는 app을 생성했을때 domain뒤에 RESTful API기준으로 /user를 추가하여 urlpattern을 설정하여 해당경로로 인도한다

profile
dev_pang의 pang.log

0개의 댓글