본문 바로가기

Django로 블로그 사이트 만들기: 단계별 가이드

_Big 2025. 5. 15.
반응형

django 로고 이미지


블로그를 만드는 것은 Django를 배우기에 가장 좋은 방법 중 하나입니다. 이 프로젝트는 모델, 뷰, 템플릿, 사용자 상호작용 등 프레임워크의 핵심 개념을 모두 다룹니다. Django를 처음 접하는 분이든, 웹 개발 실력을 다지고 싶은 분이든, 이 가이드는 완전한 기능을 갖춘 블로그를 처음부터 끝까지 구현하는 데 도움을 줄 것입니다.

서론

Django는 빠른 개발과 깔끔하고 실용적인 설계를 장려하는 고급 Python 웹 프레임워크입니다. 이 튜토리얼에서는 Django의 핵심 기능을 활용하여 블로그 사이트를 만드는 주요 단계를 안내합니다.

이 가이드를 따라 하면, 게시물 작성, 편집, 삭제, 보기 기능과 사용자 친화적인 URL을 갖춘 완성형 블로그를 만들 수 있습니다.

1. Django 프로젝트 설정

먼저 가상 환경을 만들고 Django를 설치합니다:

python -m venv env
source env/bin/activate  # Windows: env\Scripts\activate
pip install django
django-admin startproject blogsite
cd blogsite
python manage.py startapp blog

settings.pyINSTALLED_APPS'blog'를 추가한 후 다음 명령어를 실행하세요:

python manage.py migrate

이제 개발을 시작할 준비가 완료되었습니다.

 

2. 블로그 포스트 모델 정의

blog/models.py 파일에 블로그 게시물 모델을 정의합니다:

from django.db import models
from django.utils import timezone

class Post(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    created_at = models.DateTimeField(default=timezone.now)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.title

다음으로 마이그레이션을 실행합니다:

python manage.py makemigrations
python manage.py migrate

admin.py에 모델을 등록하면 Django 관리자 페이지를 통해 게시물을 추가할 수 있습니다.

 

3. 뷰와 URL 만들기

blog/views.py에서 게시물 리스트와 개별 게시물을 보여주는 뷰를 추가합니다:

from django.shortcuts import render, get_object_or_404
from .models import Post

def post_list(request):
    posts = Post.objects.all().order_by('-created_at')
    return render(request, 'blog/post_list.html', {'posts': posts})

def post_detail(request, pk):
    post = get_object_or_404(Post, pk=pk)
    return render(request, 'blog/post_detail.html', {'post': post})

blog/urls.py에 URL 경로를 설정합니다:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.post_list, name='post_list'),
    path('post/<int:pk>/', views.post_detail, name='post_detail'),
]

이 URL 설정을 프로젝트의 urls.py에 포함시키세요.

 

4. 템플릿 만들기

templates/blog 디렉토리를 만들고 post_list.htmlpost_detail.html 파일을 생성합니다.

post_list.html 예시:

<h1>My Blog</h1>
{% for post in posts %}
  <h2><a href="{% url 'post_detail' post.pk %}">{{ post.title }}</a></h2>
  <p>{{ post.created_at }}</p>
  <p>{{ post.content|truncatechars:200 }}</p>
{% endfor %}

post_detail.html:

<h1>{{ post.title }}</h1>
<p>{{ post.created_at }}</p>
<div>{{ post.content|linebreaks }}</div>
<a href="{% url 'post_list' %}">전체 게시물로 돌아가기</a>

Django의 템플릿 상속 시스템을 사용하면 레이아웃을 더욱 깔끔하게 정리할 수 있습니다.

 

5. 게시물 작성 및 수정 기능 추가

Django의 제네릭 클래스 기반 뷰를 사용할 수도 있지만, 여기선 폼을 사용한 함수 기반 예시를 보여드리겠습니다:

from django.shortcuts import redirect
from .forms import PostForm

def post_new(request):
    if request.method == "POST":
        form = PostForm(request.POST)
        if form.is_valid():
            post = form.save()
            return redirect('post_detail', pk=post.pk)
    else:
        form = PostForm()
    return render(request, 'blog/post_edit.html', {'form': form})

PostForm은 모델 기반으로 생성하고, 관련 URL과 템플릿을 추가하면 게시물 작성 기능이 완성됩니다.

 

마치며

이제 Django로 완전한 기능의 블로그를 구축하셨습니다. 이 프로젝트는 Django 개발의 핵심 요소—모델, 뷰, 템플릿, URL 라우팅, 폼—을 모두 다루고 있습니다.

다음 단계로 어떤 기능을 추가해보시겠어요? 태그, 댓글, 사용자 인증 시스템은 어떠신가요? 아래 댓글로 여러분의 아이디어나 궁금한 점을 공유해주세요—블로그를 더 확장해 나가는 데 도움을 드리고 싶습니다!

 

 

Django 모델링: 데이터베이스 설계의 핵심

강력한 웹 애플리케이션은 모두 잘 구조화된 데이터베이스 위에 구축됩니다. Django 세계에서는 데이터를 제대로 모델링하는 것이 모든 것의 출발점입니다—사용자 인터랙션부터 백엔드 처리까

bigadmin.org

 

반응형

댓글