Lina's Toolbox

Django 설치하기/ 장고란? 본문

스파르타 내일 배움 캠프 AI 웹개발 과정/Django framework

Django 설치하기/ 장고란?

Woolina 2024. 8. 8. 13:40

 

 

 

웹 페이지에서의 기능 구현 방법

 

1️⃣ 프로그래밍 언어를 이용해서 하나하나 모두 만드는 방법

  • 장점
    • 자신이 모든것을 이해할 수 있습니다.
    • 모든것을 뜻대로 동작하게 만들 수 있습니다.
  • 단점
    • 모든것을 아주 잘 알아야 합니다.
    • → 웹의 특성, 보안, 데이터베이스 등 정말 많은 부분들이 있어요.
    • 너무 많은 시간이 걸립니다.

 2️⃣ 이미 만들어진 것을 가져와서 사용하는 방법

→ 로그인 / 로그아웃 같이 많은 기능들이 웹사이트 마다 비슷해요!

  • 장점
    • 모든것을 만들 필요없이 가져다가 사용하는 방식으로 개발이 가능합니다.
    • 아주 빠르게 웹 사이트를 만들 수 있습니다.
  • 단점
    • 처음에 러닝 커브(학습 비용)가 존재합니다.
    • → 다른 개발자들이 만들어놓은 코드를 어느정도 이해하고 사용법을 알아야 해요!
    • 모든것을 원하는대로 커스텀하기 어렵습니다.
    • → 가져다가 쓰는 것이기 때문에 한계가 존재해요.

프레임워크(Framework)란?

📚 소프트웨어 개발을 위한 구조적인 틀

  • 개발자들이 프로그램을 만들때 자주 사용하는 여러 도구를 모아놓은 것입니다.
  • 특정한 작업이나 목적을 수행하기 위한 코드 뭉치입니다.
  • 파이썬에는 Django, Flask, FastAPI 등의 여러 프레임워크가 있습니다. 

 📚 왜 사용할까요?

  • 프레임워크를 사용하면 생산성이 아주 높아집니다.
  • 부가적인 부분은 프레임워크에 맡기고, 핵심 로직에만 집중할 수 있습니다.
  • 구조적으로 안정적인 형태로 개발이 가능합니다.
  • → 프레임워크는 슈퍼개발자, 한명도 아니고 여러명이 모여 논의를 통해 만들어져요! 즉, 굉장히 단단하고 안정적인 코드예요!
  • 빠르고 안정적이며, 높은 품질의 소프트웨어 개발 가능합니다. 

Django

다양한 프레임워크 중에서도 Python 기반의 웹 프레임워크인 Django를 배워야하는 이유는 뭘까요?

"데드라인을 지키는 완벽주의자들을 위한 도구" 라고 한다.

Python 기반

  • Django를 다루기위해 다른 언어를 배울 필요가 없습니다.
  • Python을 사용해서 웹개발이 가능합니다! 👍

웹 프레임워크

  • 웹을 만들기 위한 프레임워크입니다.
  • 빠른 웹개발을 위한 모든 것이 준비되어 있습니다.

Why Django?

  • DRY(Don’t Repeat Yourself) 원칙
    • 코드 중복을 최소로하는 개발 원칙을 따릅니다.
  • 모든것이 갖춰진 프레임워크
    • 보안, 관리자기능, Auth 등의 필요한 모든것이 준비되어있습니다.
  • 풍부한 레퍼런스
    • Google과 함께라면 두렵지 않겠죠?
    • 여러분의 모든 에러는 이미 해결책이 있습니다.
  • 검증된 프레임워크
    • 어떠한 도구(프레임워크)를 고를때는 그것을 어디에 사용했는지 봐야합니다.

이밖에도 토스, 화해, 번개장터, 에이블리 …

우리가 알만한 앱들이 장고로 개발되었다.

 

이러한 앱들이 이미 검증을 마친 것이니, 우리가 개발하려는 웹은 다 만들수 있다고 해도 무방할 것이다!


Django 설치

그럼 이제 실습을 위해 장고를 본격적으로 설치해보자.

 

먼저 파이썬 부터 설치해야한다.

 

1. Python 설치

  • 3.10.x 버전을 사용합니다.
    → 3.9.x도 가능해요. 이상없어요!
더보기

파이썬 3.10 버전 설치하기

 

window

https://www.python.org/ftp/python/3.10.11/python-3.10.11-amd64.exe

mac OS

https://www.python.org/ftp/python/3.10.11/python-3.10.11-macos11.pkg

 

🚨 주의) Add Python to PATH 에 체크해야 합니다!!


소프트웨어 버전 넘버링

보통 소프트웨어 버전은 A.B.C 형태를 취합니다.

 

 📚 왜 그럴까요? 🤔 Major.Minor.Patch

  • Major : 주요 버전은 소프트웨어의 큰 변화나 기능 추가를 나타냅니다. 주요 버전이 변경되면 호환성이 없는 변경사항이 있을 수 있으며, 이는 이전 버전과의 호환성을 보장하지 않을 수 있음을 의미합니다.
  • Minor : 부 버전은 주요 버전 안에서의 작은 변화를 나타냅니다. 주로 새로운 기능의 추가나 개선된 기능 등을 포함합니다. 부 버전의 변경은 주요 버전과의 호환성을 유지하면서 새로운 기능을 추가하는 것이 일반적입니다.
  • Patch : 패치 버전은 보통 버그 수정, 보안 업데이트, 또는 작은 수정 사항을 나타냅니다. 주요 버전과 부 버전은 변경되지 않지만, 코드의 수정이 있을 수 있습니다. 일반적으로 패치 업데이트는 호환성을 유지하면서 이전 버전의 안정성을 향상시킵니다.

💡 버전 번호 체계가 존재하며 이는 소프트웨어 개발자에게 번호만 보고도 어떠한 변경사항이 적용되었고, 업그레이드 등의 작업을 해야할 지 말아야할 지 알려주는데 도움을 준다!


2. 가상환경 (optional)

이제 가상환경을 만들어보자.

 

가상환경이란?

  • 하나의 컴퓨터에 여러개의 개발 환경을 셋팅하는 것입니다.

왜 해야할까요?

  • 프로젝트별 환경 분리를 위해서 해야합니다.
  • Global 환경과 개별 환경 설정을 위해서 해야합니다.

가상환경 생성 및 적용

 

1️⃣ venv 폴더 만들기

python -m venv venv

이 명령어를 실행하면 현재 디렉토리 안에 venv라는 이름의 가상 환경 디렉토리가 생성됩니다.

 

2️⃣ 가상환경 활성화

 

windows

source venv/Scripts/activate

윈도우에서는 이런식으로, activate 파일이 가상환경 디렉토리 안의 Scripts 폴더 안에 존재한다.

 

macOS

source venv/bin/activate

맥에서는 이렇게, venv/bin 폴더 안에 activate 파일이 있는 것을 확인할 수 있다.

 

3️⃣ 설치된 파이썬 패키지 보기

이제 맞게 잘 설치 된 것인지 확인해보자!

pip list 

설치된 패키지 와 그 버전의 리스트를 확인할 수 있다.


가상환경을 꼭 설치해야할까?

답은 NO🙅🏻‍♀️!

 

가상환경은 프로젝트마다 서로 다른 패키지 버전을 관리하기 위해  Python의 전역 환경에서 독립적인 작업 공간을 제공하는 것입니다.

가상환경을 키면 가상환경, 가상환경을 끄면 global 환경을 사용하게 된다.

가상환경을 굳이 사용하고 싶지 않다면, Django를 전역(global) 환경에 설치할 수도 있습니다.

 

이 경우, 시스템의 Python 환경에 직접 패키지를 설치하게 되어,

굳이 매번 가상환경을 키지 않아도 되므로 관리가 간편할 수 있습니다.

🚨 하지만 이 방법은 여러 프로젝트에서 서로 다른 패키지 버전이 필요할 때 충돌을 일으킬 수 있습니다.
또한, 패키지와 종속성을 전역 환경에 설치하면, 다른 프로젝트나 시스템의 Python 환경과의 의존성 충돌을 일으킬 위험이 있습니다.

 

 

가상환경에서의 패키지 리스트
전역 환경에서의 패키지 리스트

 

➡️ 전역 환경에는 훨씬 많은 패키지가 깔려있는데 가상환경에는 없네? ➡️  서로 다른 독립적인 환경임을 알 수 있다.


03. Django 설치하기

1️⃣ 설치

pip install django==4.2

 

 2️⃣ 설치 패키지 확인하기

pip list

Django 만 설치했는데, 다른 것도 설치되는 이유? → 의존성 때문입니다. Django도 결국 또 다른 것들의 도움을 받아 만들어집니다.

따라서 장고를 사용하기 위해서는 저것들이 함께 설치되어야합니다.

→ 이 버전들은 항상 동일해야해요!

→ 그래서 적어서 전달해야합니다.

 

3️⃣ requirements.txt에 freeze하기

pip freeze > requirements.txt

→ 현재 설치된 목록을 requirements.txt에 명시합니다.

→ 앞으로 설치를 하고 나서 항상 이 과정을 진행해야합니다.

 

🚨 단, 전역환경에서 설치해줬다면, 다른 파일들도 함께 있을 거기때문에 큰 의미가 없겠죠. -> 가상환경은 사용하는 게 더  좋습니다.

 

 

4️⃣ 만들어진 requirements.txt를 읽어오는 법

pip install -r requirements.txt

→ requirements.txt를 한줄씩 읽으면서 모두 설치를 해줍니다.

 

 

📌 pip install을 한 다음에는 항상 pip freeze > requirements.txt 도 쳐주는 습관을 들이자!


우리는 장고의 최신버전이 아닌, 4.2버전을 설치했다. 그 이유는 뭘까?

 

LTS(Long Term Support)

모든것은 진화하고 발전합니다. 각 최신 버전은 더욱 많은 기능을 포함할 것입니다.

그럼 가장 최신버전이 늘 제일 좋을까요? ➡️ NO! 최신 버전이 만사 OK인 것은 아닙니다!

  • 어떤 패키지를 선택 & 설치할 때는 반드시 호환성을 고려해야합니다.
  • 가장 최신버전을 설치한다고해서 모든 것이 호환되지는 않습니다.
    ex) macOS M1 Chip 🤔
  • 프로젝트 호환성이 높고 오래 사용할 수 있는 버전을 선택해야 합니다.
    → 안정적이고 장기적으로 지원을 받을 수 있는 버전을 선택해야해요!
  • 소프트웨어나 기술 제품의 장기 지원을 나타내며 LTS 버전은 보다 오랜 기간 동안 지원되며 보안 업데이트, 버그 수정, 백포트된 기능 업데이트 등을 포함합니다.
    → 사용자들이 해당 소프트웨어를 안정적으로 운영하고 유지보수할 수 있도록 도와줘요!
더보기

현업에서는, 안정성을 더 중요시하므로,
최신버전보다는 구버전을 사용하는 경우가 많습니다.
LTS를 받을 수 있는 버전을 선택하는 것이 좋겠죠.

  • 그럼 우리는 이걸 어떻게 알 수 있을까요?
    → 관련내용을 검색하고, 읽어서 찾을 수 있어요!

https://www.djangoproject.com/download/

 

Python도 이런 LTS가 존재합니다.

https://devguide.python.org/versions/