[Django]Django 개념 및 Python실습
[Django]개념 및 실습
Django 기본 개념과 실습: Polls 앱 만들기

Django는 파이썬 기반의 웹 프레임워크로, 간편하고 빠르게 웹 애플리케이션을 만들 수 있는 강력한 도구입니다. 이번 포스팅에서는 Django의 기초 개념과 실습을 통해 Polls 앱을 만들어보며 Django의 주요 기능들을 익혀보겠습니다.
1. Django 프로젝트 및 앱 생성하기
Django에서 “프로젝트”는 하나의 웹 애플리케이션 전체를 뜻하며, “앱”은 프로젝트 내에서 특정 기능을 담당하는 작은 모듈입니다. 이번 실습에서는 “polls”라는 앱을 만들어 질문과 선택지를 다루는 간단한 투표 시스템을 구현해보겠습니다.
프로젝트 생성
먼저, Django 프로젝트를 생성합니다.
$ django-admin startproject mysite
이 명령어를 실행하면 mysite라는 프로젝트가 생성됩니다. 이제 이 프로젝트 내부에 polls라는 이름의 앱을 만들어봅시다.
앱 생성
$ python manage.py startapp polls
polls 앱이 생성되면, 기본적인 설정과 함께 모델, 뷰, URL 등을 설정해줘야 합니다.
2. 뷰(Views) 생성
앱을 만들었다면, 이제 사용자가 접근할 수 있는 URL을 설정하고, 해당 URL에 대한 응답을 보내는 뷰를 작성해야 합니다. 뷰는 사용자의 요청을 받아 적절한 응답(HTML, JSON 등)을 반환하는 함수 또는 클래스를 의미합니다.
뷰 작성 (polls/views.py)
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. This is the polls app!")
index 뷰는 사용자가 요청했을 때 “Hello, world.”라는 응답을 보내줍니다. 이 뷰를 사용하기 위해선 URL과 연결해야 합니다.
3. URL 연결
Django에서는 URL 패턴을 urls.py 파일을 통해 정의합니다. 먼저, 프로젝트의 urls.py에 polls 앱의 URL을 포함시킵니다.
mysite/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('polls/', include('polls.urls')), # polls 앱의 URL 포함
]
그리고 polls 앱에 별도의 urls.py 파일을 생성해 다음과 같이 작성합니다.
polls/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
이제 사용자가 http://localhost:8000/polls/에 접속하면, index 뷰가 호출되고 “Hello, world.” 메시지를 확인할 수 있습니다.
4. 데이터베이스 모델 생성
Django의 핵심 기능 중 하나는 ORM(Object Relational Mapping)입니다. 이를 통해 복잡한 SQL 쿼리를 작성하지 않고도, 파이썬 코드로 데이터베이스 테이블을 다룰 수 있습니다.
모델 정의 (polls/models.py)
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
Question: 질문을 저장하는 테이블로, 질문 내용과 작성 날짜를 저장합니다.Choice: 선택지를 저장하는 테이블로,Question과의 관계(Foreign Key)를 통해 특정 질문에 대한 선택지를 저장합니다.
5. 모델을 데이터베이스에 반영하기
모델을 정의했다면 이를 데이터베이스에 반영하기 위한 마이그레이션(migration) 작업을 해야 합니다.
마이그레이션 생성
$ python manage.py makemigrations polls
이 명령어는 polls 앱의 모델에 대한 마이그레이션 파일을 생성합니다. 이 파일은 데이터베이스에 어떤 테이블을 생성할지에 대한 정보를 담고 있습니다.
SQL로 변환된 명령어 확인하기
$ python manage.py sqlmigrate polls 0001
마이그레이션 파일에서 실제 SQL로 변환된 명령어를 확인할 수 있습니다. Django는 이 명령어를 통해 데이터베이스와 상호작용합니다.
마이그레이션 실행
$ python manage.py migrate
이 명령어를 실행하면, 정의한 모델이 데이터베이스에 반영되어 테이블이 생성됩니다.
6. 추가 뷰 및 URL 설정
새로운 URL을 만들고, 해당 URL에 대한 뷰를 작성해보겠습니다. 이번에는 다른 메시지를 반환하는 뷰를 추가해봅니다.
뷰 수정 (polls/views.py)
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world.")
def some_url(request):
return HttpResponse("This is another URL!")
URL 설정 (polls/urls.py)
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('some_url/', views.some_url), # 새로운 URL 설정
]
이제 http://localhost:8000/polls/some_url/에 접속하면 “This is another URL!” 메시지를 볼 수 있습니다.
7. 앱 등록하기
마지막으로, 생성한 polls 앱을 프로젝트에 등록해야 합니다. mysite/settings.py 파일에서 INSTALLED_APPS 항목에 polls 앱을 추가합니다.
mysite/settings.py
INSTALLED_APPS = [
# ...
'polls.apps.PollsConfig', # polls 앱 추가
]
마무리
이번 포스팅에서는 Django의 기본 개념과 함께 polls 앱을 만들며 뷰, URL 설정, 데이터베이스 모델 생성 및 마이그레이션 과정을 살펴보았습니다. Django는 빠르고 쉽게 웹 애플리케이션을 개발할 수 있는 강력한 도구입니다. 앞으로 더 다양한 기능과 심화된 내용을 다루며 Django의 가능성을 확장해봅시다.
다음 포스팅에서는 Django의 관리자(Admin) 기능을 살펴보고, 폼 처리 및 템플릿을 사용하는 방법을 소개하겠습니다!
댓글남기기