Django는 파이썬으로 작성된 무료 오픈 소스 웹 프레임워크로, 신속한 웹 개발을 목표로 하고 있습니다. Django는 ‘하나의 규약, 다수의 가능성’ 원칙에 따라 작동하여, 개발자가 간단하게 웹 애플리케이션을 구축할 수 있도록 돕습니다. 이 글에서는 Django를 설치하고 프로젝트를 시작하는 방법을 단계별로 설명하겠습니다.
1. Django 설치하기
Django를 설치하기 위해서는 Python이 필요합니다. Django는 Python 3.x 버전과 호환됩니다. Python이 설치되어 있는지 확인하려면, 다음 명령어를 터미널에 입력하세요:
python --version
만약 Python이 설치되어 있지 않다면, 공식 웹사이트(python.org)에서 다운로드하여 설치하세요. Python 설치 후, pip(파이썬 패키지 관리자)를 사용하여 Django를 설치할 수 있습니다. 다음 명령어를 입력하여 Django를 설치합니다:
pip install django
설치가 완료되면, Django의 버전을 확인하여 올바르게 설치되었는지 검증할 수 있습니다:
django-admin --version
2. Django 프로젝트 시작하기
Django 프로젝트를 시작하기 위해서는 먼저 새로운 Django 프로젝트를 생성해야 합니다. 다음 명령어를 사용하여 프로젝트를 생성합니다:
django-admin startproject myproject
위 명령어에서 myproject
는 프로젝트의 이름입니다. 원하는 다른 이름을 사용할 수도 있습니다. 명령어가 실행되면, 프로젝트 디렉토리가 생성됩니다. 해당 디렉토리로 이동합니다:
cd myproject
프로젝트 디렉토리에는 다음과 같은 파일 구조가 생성됩니다:
manage.py
: Django 프로젝트를 관리하기 위한 명령줄 유틸리티 파일입니다.myproject/
: 프로젝트의 설정 및 기타 파일이 포함된 폴더입니다.__init__.py
: 이 디렉토리가 파이썬 패키지임을 알리는 빈 파일입니다.settings.py
: Django 프로젝트의 설정 파일입니다.urls.py
: URL 매핑을 설정하는 파일입니다.wsgi.py
: WSGI 웹 서버와 연결하기 위한 파일입니다.
3. Django 개발 서버 실행
프로젝트의 모든 설정이 완료되었으므로, 이제 Django 개발 서버를 실행할 차례입니다. 아래 명령어를 입력하여 개발 서버를 시작할 수 있습니다:
python manage.py runserver
서버가 성공적으로 시작되면, 웹 브라우저에서 http://127.0.0.1:8000
을 입력하여 웹 애플리케이션을 확인할 수 있습니다. Django의 기본 환영 페이지가 나타나면, 서버가 정상적으로 작동하는 것입니다.
4. 기본 앱 만들기
Django에서는 웹 애플리케이션의 기본 단위가 앱입니다. 각 앱은 특정 기능을 다루며, 웹 애플리케이션 내에서 재사용할 수 있습니다. 새로운 앱을 만들기 위해서는 다음 명령어를 사용합니다:
python manage.py startapp myapp
이 명령어를 실행하면 myapp
이라는 새로운 디렉토리가 생성됩니다. 디렉토리 구조는 다음과 같습니다:
migrations/
: 데이터베이스 스키마 변경 사항을 저장하는 폴더입니다.admin.py
: Admin interface를 위한 설정 파일입니다.apps.py
: 앱의 설정을 정의하는 파일입니다.models.py
: 데이터베이스 모델을 정의하는 파일입니다.tests.py
: 앱의 테스트를 작성하는 파일입니다.views.py
: 요청을 처리하고, 응답을 생성하는 뷰를 정의하는 파일입니다.
5. 앱 등록하기
생성한 앱을 Django 프로젝트에 등록하기 위해서는 settings.py
파일을 수정해야 합니다. 해당 파일에서 INSTALLED_APPS
항목에 앱의 이름을 추가합니다:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp', # 추가된 앱
]
6. 간단한 뷰 만들기
뷰는 사용자의 요청을 처리하고 응답을 생성하는 Django의 핵심 구성 요소입니다. views.py
파일에 간단한 뷰 함수를 작성해보겠습니다:
from django.http import HttpResponse
def home(request):
return HttpResponse("안녕하세요, Django!")
작성한 뷰를 URL에 매핑하려면 urls.py
를 수정합니다. Django 프로젝트의 urls.py
파일을 열고, 아래와 같이 코드를 추가합니다:
from django.contrib import admin
from django.urls import path
from myapp.views import home # 방금 만든 뷰를 가져옵니다.
urlpatterns = [
path('admin/', admin.site.urls),
path('', home, name='home'), # 메인 URL에 home 뷰를 매핑합니다.
]
7. 서버 재시작 및 확인
뷰와 URL 설정을 완료한 후, 서버를 재실행합니다:
python manage.py runserver
웹 브라우저에서 http://127.0.0.1:8000
을 입력하면 “안녕하세요, Django!”라는 메시지가 표시됩니다. 이제 Django 웹 애플리케이션의 기본 구성 요소를 성공적으로 구축했습니다.
8. 데이터베이스 설정
Django는 여러 데이터베이스를 지원하지만, 기본적으로 SQLite를 사용합니다. 데이터베이스 설정을 변경하려면 settings.py
파일의 DATABASES
섹션을 수정해야 합니다. 예를 들어, PostgreSQL을 사용하고 싶다면 다음과 같이 설정할 수 있습니다:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydatabase',
'USER': 'mydatabaseuser',
'PASSWORD': 'mypassword',
'HOST': 'localhost',
'PORT': '5432',
}
}
PostgreSQL을 사용하기 위해서는 해당 데이터베이스에 대한 드라이버를 설치해야 합니다:
pip install psycopg2
9. 데이터베이스 모델 생성
데이터베이스와 상호작용하기 위해서는 모델을 생성해야 합니다. models.py
파일에 아래와 같이 모델을 정의해봅시다:
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
모델을 정의한 후, 데이터베이스에 적용하기 위해 마이그레이션을 생성하고 실행해야 합니다:
python manage.py makemigrations
python manage.py migrate
10. 관리자 인터페이스 사용하기
Django는 기본적으로 강력한 관리자 인터페이스를 제공합니다. 이를 사용하기 위해서는 항상 관리자 계정을 만들어야 합니다. 관리자 계정을 생성하려면 다음 명령어를 실행합니다:
python manage.py createsuperuser
생성된 관리자 계정으로 개발 서버를 실행 후 웹 브라우저에서 http://127.0.0.1:8000/admin
에 접속하여 로그인합니다. 관리자 인터페이스에 들어가면, 방금 생성한 Article 모델을 관리할 수 있습니다.
11. 결론
Django를 설치하고 프로젝트를 시작하는 방법에 대해 알아보았습니다. Django는 웹 개발을 간소화하기 위해 많은 기능과 강력한 도구를 제공합니다. 앱 개발, 데이터베이스 모델링, 관리자 인터페이스 등 다양한 기능을 통해 효과적으로 웹 애플리케이션을 구축할 수 있습니다. 다음 단계로는 Django의 고급 기능을 탐색하거나 외부 라이브러리를 통해 애플리케이션을 더 확장해볼 수 있습니다.
이제 Django를 활용하여 나만의 웹 애플리케이션을 개발할 준비가 되었습니다. 지속적인 학습과 실험을 통해 자신의 기술을 발전시키시길 바랍니다!
감사합니다.