[Django 기초] 1강, 2강

jinsik·2022년 9월 28일
0
post-custom-banner

1강 웹프로그래밍과 Django

[T24] 장고(Django) 01강_웹프로그래밍과 Django

🏆 웹과 관련된 기본 지식과 용어들을 배우게 된다.

네트워크

  • 인터넷이 연결된 네트워크 안에서 웹 서비스를 사용할 것이다.
  • 그러면 네트워크와 연결된 모든 사물들이 그 웹 서비스를 이용할 수 있다.

클라이언트와 서버의 관계

클라이언트: 기기에 설치되어 있는 브라우저가 클라이언트가 될 수 있다.

  • 이 브라우저를 통해 서버에 서비스를 요청한다. (request)
  • 브라우저가 아니더라도 모바일 환경에서 다양한 앱이나 윈도우의 ssh 명령어를 이용한 명령 프롬프트도 클라이언트가 된다.
  • 기기와 응용 프로그램을 아울러 클라이언트라 부르기도 한다.

서버: 클라이언트의 요청을 받으면 그 요청에 맞는 작업을 수행하여 서비스한다.

  • 클라이언트의 요청에 맞는 데이터를 응답한다. (response)

HTTP: 클라이언트와 서버 간 통신하는데에 있어서 제일 많이 쓰이는 통신 프로토콜

  • 클라이언트-서버 간 통신은 간략하게 다음과 같이 이루어진다.
    1. 클라이언트가 서버에 서비스를 요청 (request)
    2. 서버가 서비스를 하기 위해 필요한 작업을 수행
    3. 서버가 클라이언트에게 결과를 응답 (response)
    4. 응답이 끝나면 HTTP가 연결을 끊어버림
  • 서버는 많은 클라이언트들을 감당해야 하기 때문에 서버의 응답이 끝나면 HTTP가 연결을 해제한다.
    • 연결을 유지해야 하는 경우에는 쿠키와 세션을 이용하면 된다.
    • 연결을 유지해야 하는 데이터가 클라이언트쪽에 있으면 쿠키, 서버쪽에 있으면 세션이라고 한다.
    • 보안 측면에서는 개인 PC에 저장되는 쿠키보다는 서버에 저장되는 세션이 더 안전하다.

HTTP 처리 방식

Client → Server 요청할 때 쓰이는 방식

  • POST
    • 클라이언트가 서버쪽으로 어떤 데이터를 넘기고 싶을 때 사용한다.
  • GET
    • 클라이언트가 서버쪽에서 어떤 데이터를 받고 싶을 때 사용한다.
  • PUT
    • 서버에 있는 데이터를 수정하고 싶을 때 사용한다.
  • DELETE
    • 서버에 있는 데이터를 삭제하고 싶을 때 사용한다.
  • 그 외 잘 안쓰이는 방식
    • HEAD
    • OPTION
    • TRACE
    • CONNECT
  • HTML의 태그는 POST와 GET 방식만 지원한다.

Server → DB

  • Create: 생성
  • Read: 조회
  • update: 수정
  • Delete: 삭제

POST와 GET

오타: POST의 요청 메시 → 요청 메시지

GET

  • URL에 쿼리 스트링을 붙여 서버로부터 원하는 정보를 얻을 수 있게 한다.
  • 데이터가 노출되므로 상대적으로 보안에 취약하다.

POST

  • 메시지에 데이터를 담아 요청한다.
  • URL이 아닌 메시지에 데이터를 담음으로써 상대적으로 보안에 강하다.
  • Django에서는 보통 POST를 이용한다.

URL

URL의 기본 형태

→ [ 프로토콜 ] :// [ 도메인(호스트) ] / [ 경로 ] ? [ 쿼리 ]

  • 데이터를 요청하는 쿼리문이 URL로 그대로 노출된다.

REST URL 형태

→ [ 프로토콜] :// [ 도메인(호스트) ] / [ URL 맵핑 (데이터)스트링 ]

  • 추후에 학습하면서 자연스럽게 이해할 수 있게 된다.

REST와 Django URL 맵핑

REST 형태로 데이터가 들어오면 Django에서는 함수 호출과 같이 미리 정해둔 작업을 한다.

→ 이것을 맵핑이라고 한다.

서버 구성

서버는 보통 웹 서버 하나만 있는 것이 아니라 애플리케이션 서버도 둔다.

  • 웹 서버
    • 웹 서버에 있는 정적인 데이터를 요청했을 때는 단순히 처리하면 되지만 날마다 바뀌는 날씨 정보와 같이 동적인 데이터를 요청 시 애플리케이션 서버로 요청을 전달하게 된다.
  • 애플리케이션 서버
    • DB와 연동하여 주로 동적인 데이터 요청을 처리한다.
  • 그 외 다른 서버들이 많이 있을 수 있다. (메일 서버, ftp 서버, …)
  • 하드웨어적으로 서버를 분리하면 메모리 효율 향상과 성능 향상을 노릴 수 있다.

2강 Django 설치 및 프로젝트 생성

[T25] 장고(Django) 02강_Django설치 및 프로젝트 생성

🏆 Python, PIP, Django 설치와 MVT 패턴, 프로젝트의 구조에 대해서 알게 된다.

환경

  • MacBook Air (M1, 2020)
  • macOS Monterey 12.5.1

PIP (Python Install Package)

pip 버전 업그레이드하기

$ pip install --upgrade pip
  • pip 대신에 pip3 명령어를 사용할 수 있다.

pip 버전 확인하기

$ pip --version

Django 설치

장고를 설치하기 전에 파이썬 가상환경에 대해서 알아보고 오자.
내가 헤맨 몇 시간 동안의 기록이다.
파이썬 가상환경 구축

완료되었으면 다음 명령어로 django를 설치할 수 있다.

$ pip install django

설치된 django 경로 확인하기

$ python -c "import django; print(django.__path__)"

Django 프로젝트 생성

$ django-admin startproject [project_name]

애플리케이션 생성

$ python manage.py startapp [app_name]
  • 여기서 프로젝트를 여러가지의 기능들을 모은 것이라고 한다면 애플리케이션은 하나하나의 기능, 동작을 가리킨다. 모듈같은 의미인 것 같다.
  • 프로젝트 내에서 실행하여야 한다.
💡 여기까지 실습 준비를 마쳤고, 이제부터는 MVT 패턴에 대해 알아보자.

MVC 패턴

  • 모델은 DB와 연동되어 있고, 컨트롤러는 클라이언트에게 리퀘스트를 받으면 모델에서 데이터를 가져와 처리한다.
  • 그 후 가장 적합한 뷰를 골라 응답을 한다.
  • Model, View, Control 역할을 나눴기 때문에 유지보수가 용이하다.
  • 자바의 Spring이 MVC 패턴으로 되어 있다.

MVT 패턴

  • Django는 MVC 패턴에서 살짝 바꾼 MVT 패턴을 사용한다.
  • Template은 MVC 패턴의 View와 동일하다.
  • MVT 패턴에서의 View는 MVC 패턴의 Control과 똑같다.
  • 결론적으로 동일하나 용어만 다르다.

프로젝트 디렉토리 구조

애플리케이션 디렉토리

  • model.py
    • 작은 크기의 DB가 내장되어 있음 (sqlite3)
  • views.py
  • template는 따로 만들어야 한다.

메인 애플리케이션 디렉토리

  • settings.py
    • 프로젝트의 설정 담당
  • urls.py
    • 클라이언트로부터 url로 요청받았을 경우 이 파일이 뷰와 맵핑시켜준다.

배운 내용 정리

  1. 새롭게 배운 것
    • 개발 환경 구축 중 파이썬 가상 환경에 대해서 알 수 있었다.
    • pip를 통한 파이썬 라이브러리 설치하는 방법에 대해서 알 수 있었다.
    • Django와 MVT 패턴에 대해서 알 수 있었다.
  2. 배운 것 중에 모르겠는 것들
    • 정말로 MVC 패턴과 MVT 패턴 간에 차이가 없을까?
  3. 모르는 것을 알기 위해 찾아본 것들
    • 구글에 “mvc mvt 차이”로 검색해보았다.
    • 서버와 클라이언트 간에 통신을 원활하게 하기 위해 만들어놓은 여러가지 아키텍처 패턴들이 있는데, MVC 패턴은 그 많은 패턴 중에 하나라는 것을 알았다.
    • MVC 패턴에서 Controller의 역할을 MVT 패턴에서의 View가 하며 Django 프레임워크도 일부를 직접 처리하는데에 차이가 있었다.
    • 참고: MVC/MVT Architecture
profile
공부
post-custom-banner

0개의 댓글