pyenv virtualenv 3.12.1 oz
Pyenv local oz
Poetry init
(Oz) ~/projects/lecture/oz/bookmark/ [main] charm .
Django-admin startproject mysite
Django-admin startproject mysite .
Django-admin startproject config .
Python manage.py rumserver
Poetry.lock
Pyproject.toml
Source
windows pip3 install django
python manage.py migrate
- > 데이터베이스 기본설정이라고 생각하시면 됩니다.
python manage.py makemigrations
python manage.py migrate
ows pip3 install django
python manage.py migrate
- > 데이터베이스 기본설정이라고 생각하시면 됩니다.
python manage.py makemigrations
python manage.py migrate
= > 모델을 만들면 반드시 할 것,
——————
장고(Django)에서 **앱(App)**을 만들고 첫 화면을 띄우는 과정은 "우리 집(Project)에 어떤 기능이 있는 방(App)을 만들고, 손님(User)을 맞이할 준비를 하는 과정"과 같습니다.
가장 대중적인 "Hello World" 출력 과정을 통해 그 원리를 설명해 드릴게요.
1. 앱(App) 생성: 독립된 기능 단위
장고 프로젝트는 여러 개의 앱으로 구성됩니다. 예를 들어 쇼핑몰 프로젝트라면 '상품 관리 앱', '결제 앱', '게시판 앱' 등으로 나뉩니다.
- 명령어: python manage.py startapp bookmark
- 원리: 이 명령어를 치면 bookmark라는 폴더와 함께 models.py, views.py 등의 파일이 자동으로 생깁니다. 이제 이 폴더는 '북마크' 기능만을 담당하는 독립된 단위가 됩니다.
2. 앱 등록: "나 이제 이 앱 쓸 거야"
앱만 만든다고 끝이 아닙니다. 프로젝트 설정 파일에 이 앱의 존재를 알려야 합니다.
- 파일: config/settings.py
- 방법: INSTALLED_APPS 리스트에 생성한 앱 이름을 추가합니다.
Python
INSTALLED_APPS = [ - ...,
- 'bookmark',
- ]
3. 요청과 응답의 흐름 (MVT 구조)
사용자가 브라우저에 주소를 입력했을 때 화면이 나오기까지의 과정은 보통 URL -> View -> Template 순서로 흐릅니다.
① View 만들기: "무엇을 보여줄까?"
views.py는 사용자에게 보여줄 로직을 담는 곳입니다.
- 파일: bookmark/views.py
Python
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, Django! 북마크 페이지입니다.")
② URL 연결하기: "어떤 주소로 들어올까?"
사용자가 어느 주소로 들어왔을 때 위에서 만든 index 함수를 실행할지 정해야 합니다.
- 파일: config/urls.py
Python
from django.contrib import admin
from django.urls import path
from bookmark.views import index # 우리가 만든 view를 가져옵니다.
urlpatterns = [
path('admin/', admin.site.urls),
path('hello/', index), # 127.0.0.1:8000/hello/ 로 접속하면 index 실행!
]
4. 서버 실행 및 확인
이제 모든 준비가 끝났습니다. 터미널에 명령어를 입력해 서버를 켭니다.
- 명령어: python manage.py runserver
- 확인: 브라우저 주소창에 http://127.0.0.1:8000/hello/를 입력합니다.
결과: 화면에 **"Hello, Django! 북마크 페이지입니다."**라는 문구가 뜨면 성공입니다!
💡 핵심 원리 요약
- Project vs App: 프로젝트는 전체 웹사이트, 앱은 그 안의 세부 기능입니다.
- 연결의 연속: 앱을 만들면 settings.py에 등록하고, views.py에 로직을 짜고, urls.py에 길을 내어주는 과정이 기본 루틴입니다.
- 관리자(manage.py): 앱을 만들 때도, 서버를 켤 때도 항상 이 리모컨을 사용합니다.
이제 단순한 텍스트가 아니라, 예쁜 HTML 페이지(Template)를 보여주는 방법을 알아볼까요? 아니면 데이터베이스에 데이터를 저장하는 모델(Model) 작업을 시작해볼까요?
——————
장고(Django) 프로젝트를 시작할 때 입력하는 명령어들은 단순히 "외우는 것"보다 "어떤 흐름으로 데이터가 움직이는지" 이해하는 것이 훨씬 중요합니다.
작성해주신 명령어들을 바탕으로, 장고 프로젝트의 핵심 원리를 3단계로 나누어 설명해 드릴게요.
1. 환경 설정: 나만의 독립된 방 만들기
pyenv, virtualenv, poetry를 사용하는 이유는 **"격리"**입니다.
- 원리: 컴퓨터 전체에 장고를 설치하면 프로젝트마다 버전이 엉킬 수 있습니다. 그래서 프로젝트 전용 "가상 환경"이라는 독립된 방을 만들고, 그 안에 필요한 도구(Django 등)를 모아두는 것입니다.
- Poetry의 역할: pyproject.toml은 요리 레시피와 같습니다. "이 프로젝트는 파이썬 3.12.1과 장고 5.0이 필요해"라고 기록해두면, 나중에 다른 컴퓨터에서도 똑같은 환경을 바로 복구할 수 있습니다.
2. 프로젝트 생성: 설계도와 관리자 배치
django-admin startproject config .
장고 프로젝트를 생성하면 여러 파일이 생기는데, 핵심 파일의 역할은 다음과 같습니다.
- manage.py: 이 프로젝트의 **"리모컨"**입니다. 서버 실행, DB 관리 등 모든 명령은 이 파일을 통해 전달됩니다.
- settings.py: 프로젝트의 **"설정값"**입니다. 어떤 DB를 쓸지, 어디에 사진을 저장할지 등을 결정합니다.
- urls.py: 프로젝트의 **"이정표"**입니다. 사용자가 /login으로 들어오면 어디로 보낼지 길을 안내합니다.
Tip: 뒤에 마침표(.)를 찍는 이유는 현재 폴더를 기준으로 프로젝트를 생성하여, 폴더 구조가 불필요하게 깊어지는 것을 방지하기 위함입니다.
3. 마이그레이션: 파이썬과 DB의 통역사
가장 헷갈려 하시는 makemigrations와 migrate의 차이는 **"설계도"**와 **"실제 공사"**의 차이입니다.
| 명령어 | 단계 | 비유 | 설명 |
| makemigrations | 설계도 작성 | "이런 집을 지을 거야"라고 종이에 그림을 그림 | 파이썬 코드로 작성한 모델(Model)의 변경 사항을 추적하여 0001_initial.py 같은 설계도 파일을 만듭니다. |
| migrate | 실제 공사 | 종이에 그린 그림을 보고 실제로 땅을 파고 벽돌을 쌓음 | 설계도 파일을 읽어서 **실제 데이터베이스(DB)**에 테이블을 생성하거나 수정합니다. |
Sheets로 내보내기
- 왜 두 번 나누어 하나요?
요약: 장고 프로젝트의 루틴
- 환경 준비: 가상 환경을 켜고 필요한 패키지를 설치합니다 (poetry install).
- 모델 작성: models.py에 내가 저장하고 싶은 데이터 구조를 파이썬 코드로 짭니다.
- 설계도 추출: python manage.py makemigrations를 통해 변경 내용을 기록합니다.
- DB 반영: python manage.py migrate를 통해 DB에 실제 칸을 만듭니다.
- 확인: python manage.py runserver로 서버를 띄워 확인합니다.
참고: 오타 교정
작성하신 내용 중에 몇 가지 오타가 있어 수정해 드립니다:
- rumserver → runserver
- ows pip3 install django → 윈도우 환경이라면 pip install django (단, Poetry를 사용 중이라면 poetry add django를 권장합니다.)
다음 단계로, 장고의 꽃이라고 불리는 "App(앱)"을 생성하고 첫 화면을 띄워보는 과정을 설명해 드릴까요?