[Django] Intro

송수빈·2026년 4월 15일

SSAFY

목록 보기
3/15

Web Application

Web application (web service) 개발

  • 인터넷을 통해 사용자에게 제공되는 소프트웨어 프로그램을 구축하는 과정
  • 다양한 디바이스(모바일, 태블릿, PC 등)에서 웹 브라우저를 통해 접근하고 사용할 수 있음

클라이언트와 서버

  • 웹의 동작 방식: 클라이언트 - 서버 구조
    • Client: 서비스를 요청하는 주체 (사용자의 웹 브라우저, 모바일 웹)
    • Server: 클라이언트의 요청에 응답하는 주체 (웹 서버, 데이터베이스 서버)
  • 일반적인 웹 서비스에서는 클라이언트가 페이지를 달라고 요청할 경우 서버가 페이지를 응답해줌
  • 우리가 웹 페이지를 보게 되는 과정
    1. 웹 브라우저(클라이언트)에서 ‘google.com’을 입력 후 Enter
    2. 웹 브라우저는 인터넷에 연결된 전세계 어딘가에 있는 구글 컴퓨터(서버)에게 ‘메인 홈페이지.html’파일을 달라고 요청
    3. 요청을 받은 구글 컴퓨터는 데이터베이스에서 ‘메인 홈페이지.html’파일을 찾아 응답
    4. 웹 브라우저는 전달받은 ‘메인 홈페이지.html’파일을 사람이 볼 수 있도록 해석해주고 사용자는 구글의 메인 페이지를 보게 됨

Frontend & Backend

  • Frontend (프론트엔드)
    • 사용자 인터페이스(UI)를 구성하고, 사용자가 애플리케이션과 상호작용할 수 있도록 함
    • HTML, CSS, JavaScript, 프론트엔드 프레임워크 등
      • HTML: 웹 페이지의 의미와 구조를 정의하는 언어
      • CSS: 웹 페이지의 디자인과 레이아웃을 구성하는 언어
    • Vue.js는 프론트엔드로 활용되는 대표적인 프레임워크
  • Backend (백엔드)
    • 서버 측에서 동작하며, 클라이언트의 요청에 대한 처리와 데이터베이스와의 상호작용 등을 담당
    • 서버 언어(Python, Java 등) 및 백엔드 프레임워크, 데이터베이스, API, 보안 등
    • Django는 백엔드로 활용되는 대표적인 프레임워크

Framework

Web Framework

  • 웹 애플리케이션을 빠르게 개발할 수 있도록 도와주는 도구
  • 개발에 필요한 기본 구조, 규칙, 라이브러리 등을 제공 (로그인/로그아웃, 회원관리, 데이터베이스, 보안 등)

Django Framework

  • Django란?
    • Python 기반의 대표적인 웹 프레임워크
    • 클라이언트-서버 구조의 서버를 구현하는 것이 Django를 배우는 목적
  • Django를 사용하는 이유
    • 다양성: Python 기반으로 웹, 모바일 앱 백엔드, API 서버 및 빅데이터 관리 등 광범위한 서비스 개발에 적합
    • 확장성: 대량의 데이터에 대해 빠르고 유연하게 확장할 수 있는 기능을 제공
    • 보안: 취약점으로부터 보호하는 보안 기능이 기본적으로 내장되어 있음
    • 커뮤니티 지원: 개발자를 위한 지원, 문서 및 업데이트를 제공하는 활성화 된 커뮤니티
    • 검증된 웹 프레임워크: 대규모 트래픽 서비스에서도 안정적인 서비스 제공

가상 환경

가상 환경(Virtual Environment)

하나의 컴퓨터 안에서 또 다른 독립된 파이썬 환경

가상 환경 생성 및 활성화

  1. 가상 환경 생성

    python -m venv venv
    • 현재 디렉토리 안에 venv라는 폴더가 생성됨
    • venv 폴더 안에는 파이썬 실행 파일, 라이브러리 등을 담을 공간이 마련됨
    • venv라는 이름의 가상 환경을 생성한 것
  2. 가상 환경 활성화

    source venv/Scripts/activate
    • 활성화 후, 프롬프트 앞에 (venv)와 같이 표시된다면 성공한 것
    • Mac / Linux에서는 명령어가 다르니 주의: source venv/bin/activate
  3. 가상 환경 종료

    deactivate
    • 활성화한 상태에서 deactivate 명령을 입력하면, 다시 Python Global 환경으로 돌아옴

의존성 패키지

  • 의존성: 하나의 소프트웨어가 동작하기 위해 필요로 하는 다른 소프트웨어나 라이브러리
  • 의존성 패키지: 프로젝트가 의존하는 “개별 라이브러리”들을 가리키는 말
  • 패키지 목록 확인
    pip list
    • 현재 가상 환경에 설치된 라이브러리 목록을 확인하는 명령어
    • 갓 생성된 가상 환경은 추가 설치된 패키지가 없음

의존성 관리: 환경의 일치

  1. 의존성 기록 (내보내기)

    pip freeze > requirements.txt
    • 현재 가상환경에 설치된 모든 패키지와 버전을 파일로 저장
    • >는 pip 명령어가 아닌 CLI(shell)의 Redirection operator
      • 이전 명령어의 출력을 파일로 redirect, 즉 생성하고 작성한다.
      • 같은 명령어를 다시 사용할 경우 이전 파일의 내용을 덮어쓴다.
  2. 의존성 설치 (가져오기)

    pip install -r requirements.txt
    • requirements.txt에 명시된 라이브러리를 한 번에 설치
    • -r 옵션은 --requirement의 축양형
      • 패키지 이름을 하나씩 직접 입력하는 대신 “지정된 텍스트 파일을 읽어서 그 안에 적힌 모든 패키지를 설치해라”라고 지시하는 옵션
  • 의존성 패키지 관리가 필요한 이유
    • 환경의 통일
      • 버전이 다른 경우 함수명이나 동작이 달라질 수 있음
      • "내 컴퓨터에선 되는데 네 컴퓨터에선 안 돼" 문제 해결
    • 협업 효율
      • 프로젝트가 커질수록 사용하는 패키지의 개수도 늘어나게 됨
      • 팀원 간 동일한 개발 환경을 즉시 구축 가능

가상 환경 주의사항

  1. 가상 환경에 "들어가고 나오는" 것이 아니라 사용할 Python 환경을 "On/Off"로 전환하는 개념
    • 가상 환경 활성화는 현재 터미널 환경에만 영향을 끼침
    • 새 터미널 창을 열면 다시 활성화해야 함
  2. 프로젝트마다 별도의 가상 환경을 사용
  3. 일반적으로 가상 환경 폴더 venv는 관련된 프로젝트와 동일한 경로에 위치시킴
  4. 폴더 venv는 ·gitignore파일에 작성되어 원격 저장소에 공유하지 않음
    • 저장소 크기를 줄여 효율적인 협업과 배포를 가능하게 하고
    • OS 별 차이점으로 인한 문제를 방지하기 위함
    • 대신 requirements. txt를 공유하여 각자의 가상 환경을 구성
  • 가상 환경이 필요한 이유
    1. 프로젝트마다 다른 버전의 라이브러리 사용
      • 한 프로젝트에서는 Django 4.2를 다른 프로젝트에서는 Django 5.2를 사용해야 할 수도 있음
      • 가상 환경을 사용하면 서로 다른 버전을 동시에 설치해도 충돌 없이 각각의 프로젝트를 유지할 수 있음
    2. 의존성 충돌 방지
      • 프로젝트별로 라이브러리를 독립적으로 관리하게 해 줌
      • 여러 프로젝트가 동시에 같은 라이브러리를 쓰더라도 버전 충돌 문제를 예방
    3. 팀원 간 협업
      • 누구든지 동일한 방식으로 가상 환경을 만들어서, 똑같은 버전의 라이브러리를 설치하면 에러 가능성을 줄일 수 있음

요약

  1. 가상 환경 생성(python -m venv venv)
  2. 가상 환경 활성화 (source venv/Scripts/activate)
  3. 필요한 의존성 패키지 설치 (pip install)
  4. 현재 환경의 패키지 목록을 "pip freeze > requirements.txt"로 저장하여 의존성을 관리
  5. 다른 컴퓨터나 팀원도 같은 환경이 필요하다면, "pip install -r requirements.txt"로 동일한 버전의 라이브러리를 설치
  6. 작업이 끝나면 "deactivate"로 가상 환경을 비활성화
profile
🌱 🐜

0개의 댓글