Django 기반 서비스 기본 흐름
- 1. Django 시작하기
- 2. Django 프로젝트 구조 살펴보기
- 3. Django Model 알아보기
- 4. Django Template 알아보기
- 5. Django View, URL 알아보기
1. Django 시작하기
가상환경 설정
python -m venv django_photolist cd django_photolist source ./bin/activate # Windows의 경우: ./Scripts/activate
Django 설치 및 확인
pip install django python -m django --version python --version
Project 시작
django-admin startproject photoweb .
- 앱 추가
- Django에서 앱은 프로젝트 내에서 특정 기능을 수행하는 독립적인 모듈을 가리킴
- 앱은 프로젝트의 기능을 더 작은 구성 요소로 나누어 코드베이스를 구성하는 데 도움을 줌
- 예: 블로그 프로젝트
- 인증 및 권한 부여 전용 앱
- 블로그 게시물 전용 앱 등
- 예: 블로그 프로젝트
- 앱의 특징
- 모듈화: 앱은 특정 기능을 수행하는 독립적인 코드와 리소스의 모음
- 재사용성: 앱은 다른 프로젝트에서도 쉽게 재사용할 수 있음
구성 요소: 앱은 템플릿, URL, 모델, 뷰 등을 포함하는 모듈
python manage.py startapp photolist
웹서버 실행
python manage.py runserver
- 웹 브라우저에서 웹서버 시작 확인
- https://127.0.0.1:8000
- 8000은 Django가 사용하는 포트 번호
- 생성된 폴더-파일 구조
웹서버 설정 수정
#//file: "./photoweb/settings.py" # Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'photolist', # 추가할 것 ] #TIME_ZONE = 'UTC' # 시간대를 한국으로 바꿀 것 TIME_ZONE = 'Asia/Seoul'
웹서버 설정 URL 확인
- ./photoweb/urls.py
2. Django 프로젝트 구조 살펴보기
- MTV (Model-Template-View) 패턴
- Django에서는 MTV 패턴으로 전반적인 개발을 진행함
- 어떤 패턴으로 개발을 진행 → 작업 시, 규칙처럼 정해진 방식이 있고, 그 방식을 따라가며 요구하는 내용을 순서대로 채워나가는 것으로 개발을 진행한다는 의미
- Model: 앱의 데이터와 관련된 부분을 다룸
- Template: 사용자에게 보이는 부분을 다룸
- View:
- Model과 Template의 사이에서 Model의 메시지를 Template으로 전달,
- Template에서 발생하는 이벤트를 처리하는 부분
https://127.0.0.1:8000/admin/ 접속해보기
계정 만들기
python manage.py createsuperuser
- 오류 발생
Migration 오류 수정
python manage.py migrate
계정 만들기 재시도
python manage.py createsuperuser
- ID : seokhwan
- email : seokhwan@1.1.1
- password : 1234
3. Django Model 알아보기
3.1 Model
- 앱의 데이터와 관련된 부분을 다루는 영역
- 데이터베이스에 저장될 데이터의 모양을 정의하고 관련된 일부 기능들을 설정해주는 영역
현실 세상을 코드로 옮기는 과정이라고 생각할 수 있음
Model 만들기
#//file: "./photolist/models.py" from django.db import models class Photo(models.Model): title = models.CharField(max_length=50) author = models.CharField(max_length=50) image = models.CharField(max_length=200) description = models.TextField() price = models.IntegerField()
Model 적용시키기
python manage.py makemigrations python manage.py migrate
Model을 Admin 페이지에 적용시키기
#//file: "./photolist/admin.py" from django.contrib import admin from .models import Photo # Register your models here. admin.site.register(Photo)
4. Django Template 알아보기
- Template
- 사용자에게 보이는 부분 → 웹페이지의 골격이라고 할 수 있는 HTML로 작성된 부분
- 일반 HTML 작성 방법과 거의 동일하나 Template Tag를 사용한다는 점이 다름
- Template Tag: HTML이 파이썬 코드로부터 데이터를 바로 넘겨받아서 처리할 수 있는 도구
5. Django View, URL 알아보기
- View
- Model과 Template을 이어주는 다리와 같은 역할
- Model을 통해 데이터에 접근하여 Template으로부터 요청받은 데이터를 뽑아와 Template에게 답변으로 보내줌
- Model이 Django 프로젝트의 핵심이라면 View는 코드 중에서 가장 많은 비중을 차지하는 요소
- URL
- 라우팅의 역할과 동시에 서버로 해당 주소에 할당된 리소스를 요청하는 역할을 담당
- 여기서의 리소스는 HTML 페이지뿐만 아니라 내부를 채우는 데이터 등을 포함하는 개념임