Django는 파이썬으로 작성된 고급 웹 프레임워크로, 신속한 웹 개발을 가능하게 해줍니다. 본 강좌에서는 Django를 사용하여 간단한 블로그 애플리케이션을 만드는 과정을 단계별로 설명하겠습니다. 웹 애플리케이션의 기초부터 시작하여, 데이터베이스 설정, 모델 설계, 뷰 및 템플릿 작성까지 이루어질 것입니다. 마지막으로, 간단한 게시물 추가 및 삭제 기능을 구현하여 완전한 블로그 애플리케이션을 완성하겠습니다.
1. Django 설치하기
우선 Django를 설치해야 합니다. Python이 설치되어 있어야 하며, Python 패키지 관리자(pip)를 사용해 Django를 설치할 수 있습니다.
pip install django
2. Django 프로젝트 생성
Django를 설치한 후, 새로운 프로젝트를 생성할 수 있습니다. 아래 명령어를 통해 ‘myblog’라는 이름의 프로젝트를 만들겠습니다.
django-admin startproject myblog
프로젝트 디렉토리로 이동합니다.
cd myblog
3. 앱 생성
Django에서는 한 프로젝트 내에 여러 개의 앱을 생성하여 각각의 기능을 담당하도록 합니다. 이번 강좌에서는 ‘blog’라는 이름의 앱을 생성할 것입니다.
python manage.py startapp blog
4. 모델 설계
다음으로는 블로그 게시물을 저장하기 위한 모델을 설계하겠습니다. ‘blog/models.py’ 파일을 열어 아래와 같이 작성합니다.
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
위의 코드는 제목(title), 내용(content), 생성일(created_at) 필드를 가진 ‘Post’ 모델을 정의합니다. ‘created_at’ 필드는 자동으로 현재 시간이 저장됩니다.
5. 모델을 데이터베이스에 반영
모델을 정의한 후에는 이를 데이터베이스에 생성해야 합니다. 아래 명령어를 사용하여 데이터베이스 마이그레이션을 수행합니다.
python manage.py makemigrations
python manage.py migrate
6. 관리자 페이지 설정
게시물을 관리할 수 있는 관리자 페이지를 설정합니다. ‘blog/admin.py’ 파일을 열어 다음과 같이 작성합니다.
from django.contrib import admin
from .models import Post
admin.site.register(Post)
이제 관리자 페이지에서 게시물을 추가하고 수정할 수 있습니다. 관리자 계정을 생성하려면 아래 명령어를 실행합니다.
python manage.py createsuperuser
계정을 생성한 후, 서버를 실행하여 관리자 페이지에 접근할 수 있습니다.
python manage.py runserver
7. 뷰 작성
이제 게시물 목록을 보여줄 뷰를 작성하겠습니다. ‘blog/views.py’ 파일에서 아래와 같이 작성합니다.
from django.shortcuts import render
from .models import Post
def post_list(request):
posts = Post.objects.all()
return render(request, 'blog/post_list.html', {'posts': posts})
위 코드는 모든 게시물을 가져와 ‘post_list.html’ 템플릿에 전달합니다. 이제 템플릿을 작성해야 합니다.
8. 템플릿 작성
‘blog’ 디렉토리 내에 ‘templates’ 폴더를 만들고 그 안에 ‘blog’라는 또 다른 폴더를 생성한 후, ‘post_list.html’ 파일을 생성합니다.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>블로그 게시물</title>
</head>
<body>
<h1>블로그 게시물</h1>
<ul>
{% for post in posts %}
<li>{{ post.title }} - {{ post.created_at }}</li>
{% empty %}
<li>게시물이 없습니다.</li>
{% endfor %}
</ul>
</body>
</html>
9. URL 설정
Django는 URL 패턴과 뷰를 연결하여 요청을 처리합니다. ‘blog/urls.py’ 파일을 생성하고 다음과 같이 작성합니다.
from django.urls import path
from .views import post_list
urlpatterns = [
path('', post_list, name='post_list'),
]
이제 프로젝트의 URL 설정 파일인 ‘myblog/urls.py’ 파일을 수정하여 블로그 앱의 URL을 포함시킵니다.
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')),
]
10. 실행 및 테스트
모든 설정이 완료되었습니다. 서버를 다시 실행하고 브라우저에서 http://127.0.0.1:8000/
에 접속하여 게시물 목록을 확인하세요. 관리자 페이지에서는 http://127.0.0.1:8000/admin
를 통해 게시물을 추가할 수 있습니다.
11. 게시물 생성 및 삭제 기능 추가
게시물을 생성하고 삭제하는 기능을 추가하겠습니다. ‘blog/views.py’에 아래의 뷰를 추가합니다.
from django.shortcuts import redirect, get_object_or_404
from django.http import HttpResponseRedirect
from django.urls import reverse
def post_create(request):
if request.method == 'POST':
title = request.POST['title']
content = request.POST['content']
post = Post(title=title, content=content)
post.save()
return redirect('post_list')
return render(request, 'blog/post_create.html')
def post_delete(request, pk):
post = get_object_or_404(Post, pk=pk)
post.delete()
return redirect('post_list')
위 코드에서 post_create
함수는 POST 요청을 통해 새로운 게시물을 생성합니다. post_delete
함수는 주어진 게시물의 기본키를 사용하여 해당 게시물을 삭제합니다.
12. URL 추가
새로운 뷰를 URL에 추가하려면 ‘blog/urls.py’를 수정합니다.
from django.urls import path
from .views import post_list, post_create, post_delete
urlpatterns = [
path('', post_list, name='post_list'),
path('create/', post_create, name='post_create'),
path('delete//', post_delete, name='post_delete'),
]
13. 템플릿 추가
게시물을 생성하기 위한 템플릿도 추가해야 합니다. ‘blog/templates/blog/post_create.html’ 파일을 생성하고 아래와 같이 작성합니다.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>게시물 작성</title>
</head>
<body>
<h1>게시물 작성</h1>
<form method="POST">
{% csrf_token %}
<input type="text" name="title" placeholder="제목" required><br>
<textarea name="content" placeholder="내용" required></textarea><br>
<button type="submit">작성하기</button>
</form>
<a href="{% url 'post_list' %}">뒤로가기</a>
</body>
</html>
14. 결론
이로써 간단한 Django 블로그 애플리케이션을 완성했습니다. 이 강좌를 통해 Django의 기본적인 구조와 흐름을 이해할 수 있었기를 바랍니다. Django는 강력하고 확장성이 뛰어난 웹 프레임워크이므로, 더 많은 기능을 추가하며 심화 학습을 진행해보세요. 예를 들어, 댓글 기능, 카테고리별 게시물 필터링, 사용자 인증 및 권한 관리 등의 기능을 추가함으로써 더욱 강력한 블로그를 만들 수 있습니다.