Skip to content

Latest commit

 

History

History
281 lines (176 loc) · 5.81 KB

Start_Framework.md

File metadata and controls

281 lines (176 loc) · 5.81 KB

웹 프레임워크 이해하기


Ⅰ. Django 시작하기



ⅰ. Framework란?


서비스 개발에 필요한 기능들을 미리 구현해서 모은 것

Frame(틀) + Work(일하다)

  • 일정한 뼈대, 틀을 가지고 일함
  • 제공받은 도구들과 뺘대, 규약을 가지고 무언가를 만드는 일
  • 특정 프로그램을 개발하기 위한 여러 도구들과 규약을 제공함

소프트웨어 프레임워크

  • 복잡한 문제를 해결하거나 서술하는데 사용되는 기본 개념 구조

직접 개발 X

  • 자신이 만들고자 하는 로직에 집중해 개발할 수 있음
  • 소프트웨어의 생산성과 품질을 높임

ⅱ. Framework 장단점


장점

  • 개발 속도의 상승
  • 검증된 코드의 사용
  • 반복되는 불필요한 개발 감소
  • 협업에 용이

단점

  • 선택의 폭이 좁아짐
  • 러닝 커브(학습 곡선)이 존재

ⅲ. Django 특징


Python으로 작성된 프레임워크

  • Python이라는 언어의 강력함과 거대한 커뮤니티

수많은 여러 유용한 기능들

검증된 웹 프레임워크

  • 화해, Toss, 두나무, 당근 마켓, 요기요 등
  • 유명한 많은 서비스들이 사용 == 안정적인 서비스 검증



Ⅱ. 클라이언트와 서버



ⅰ. 클라이언트-서버 구조


현재 대부분 웹서비스는 클라이언트-서버 구조가 기반

클라이언트와 서버 둘 다 하나의 컴퓨터

  • 클라이언트 : 요청
  • 서버 : 응답

ⅱ. 클라이언트, 서버란?


클라이언트

  • 웹 사용자의 인터넷에 연결된 장치
  • Chrome 또는 Firefox와 같은 웹 브라우저
  • 서비스를 요청하는 주체

서버

  • 웹페이지, 사이트 또는 앱을 저장하는 컴퓨터
  • 클라이언트가 웹페이지에 접근시
    • 서버에서 클라이언트로 웹페이지 데이터를 응답
    • 사용자의 웹브라우저에 표시
  • 요청에 대해 서비스를 응답하는 주체

ⅲ. 상호작용 예시


Google 홈페이지에 접속

  1. 구글 컴퓨터에게 'Google 홈페이지.html'을 달라고 요청
  2. 요청을 받은 구글 컴퓨터는 요청한 파일을 인터넷을 통해 우리 컴퓨터에게 응답
  3. 전달받은 파일을 웹브라우저가 우리가 볼 수 있도록 해석해줌
  • 클라이언트 : 파일을 요청한 컴퓨터
  • 서버 : 파일을 제공한 컴퓨터



Ⅲ. 가상 환경



ⅰ. 가상환경을 사용하는 이유


프로젝트별 패키지를 독립적으로 관리하기 위한 것

각각의 패키지를 하나의 환경에 담아야 함

내 프로젝트를 다른 사람이 실행하기 위해선 모든 패키지를 다 설치해야 해야함


ⅱ. 가상환경 사용하기


가상환경 생성

  • python -m venv venv

가상환경 활성화(on)

  • source venv/Scripts/activate/

가상환경 비활성화(off)

  • deactivate

가상환경 패캐지 목록 저장

  • pip freeze > requirement.txt

파일로부터 패키지 설치

  • pip install -r requirement.txt



Ⅳ. Django 기본



ⅰ. Django 시작하기


프로젝트 생성

  • django-admin startproject 프로젝트명

서버 실행

  • python manage.py runserver

ⅱ. 프로젝트 구조


1. __init__.py

  • Python에게 이 디렉토리를 하나의 Python 패키지로 다루도록 지시
  • 별도로 추가 코드를 작성하지 않음

2. asgi.py

  • Asynchronous Server Gateway Interface
  • Django 애플리케이션이 비동기식 웹 서버와 연결 및 소통하는 것을 도움
  • 추후 배포 시에 사용하며 지금은 수정 X

3. setting.py

  • Django 프로젝트 설정을 관리
  • 매우 중요

4. urls.py

  • 사이트의 url과 적절한 views의 연결을 지정

5. wsgi.py

  • Web Server Gateway Interface
  • Django 애플리케이션이 웹서버와 연결 및 소통하는 것을 도움
  • 추후 배포 시에 사용하며 지금은 수정하지 않음

6. manage.py

  • 프로젝트와 다양한 방법으로 상호작용하는 커맨드라인 유틸리티
  • 수정 X

ⅲ. 장고 어플리케이션


애플리케이션(앱) 생성

  • python manage.py startapp 앱명

앱(App) == 하나의 큰 기능 단위

  • 정해진 규칙은 없으며 개발자가 판단해서 앱 생성
  • 여러 개의 앱이 아닌 단일 앱으로 개발해도 괜찮음

ⅳ. 애플리케이션 구조


1. admin.py

  • 관리자용 페이지를 설정하는 곳

2. apps.py

  • 앱의 정보가 작성된 곳
  • 별도로 추가 코드를 작성하지 않음

3. models.py

  • 애플리케이션에서 사용하는 Model을 정의하는 곳
  • MTV 패턴의 M에 해당

4. tests.py

  • 프로젝트의 테스트 코드를 작성하는 곳

5. views.py

  • view 함수들이 정의되는 곳
  • MTV 패턴의 V에 해당

6. 애플리케이션 등록

  • Installed_APPS 리스트에 반드시 추가해야함
  • settings.py에 존재

ⅴ. Project & Application


Project

  • app들의 집합
  • 프로젝트에는 여러앱이 포함될 수 있음
  • 앱은 여러 프로젝트에 있을 수 있음

Application

  • 앱은 실제 요청을 처리하고 페이지를 보여주는 등의 역할을 담당
  • 앱은 하나의 역할 및 기능 단위로 작성하는 것을 권장



Ⅴ. 요청과 응답



ⅰ. 각 파일의 기능


URL

  • 구성
  • 실제 기능을 담당하는 view와의 연결

view

  • 실제 기능
  • 함수를 사용

Template

  • 사용할 자원

작동순서

  • URL -> VIEW -> TEMPLATE