Django

Chapter 3-2 Django 블로그 목록 페이지 만들기

Chansman 2025. 5. 6. 17:15

🗂️ 블로그 목록 페이지 만들기 (Django)

1️⃣ 관리자 페이지 설정 (admin.py)

📌 관리용 페이지 구성

from django.contrib import admin
from blog.models import Blog

@admin.register(Blog)
class BlogAdmin(admin.ModelAdmin):
    ...  # 추후 확장 가능

📌 슈퍼유저 생성

python manage.py createsuperuser

→ 관리자 페이지에서 블로그 글 작성 가능


2️⃣ 모델 개선 (models.py)

📌 사용자 친화적인 출력과 Admin 표시를 위한 설정

from django.db import models

class Blog(models.Model):
    CATEGORY_CHOICES = (
        ('free', '자유'),
        ('travle', '여행'),
        ('cat', '고양이'),
        ('dog', '강아지')
    )

    category = models.CharField('카테고리', max_length=10, choices=CATEGORY_CHOICES)
    title = models.CharField('제목', max_length=100)
    content = models.TextField('본문')
    created_at = models.DateTimeField('작성일자', auto_now_add=True)
    updated_at = models.DateTimeField('작성일자', auto_now=True)

    def __str__(self):
        return f'[{self.get_category_display()}] {self.title[:10]}'

    class Meta:
        verbose_name = '블로그'
        verbose_name_plural = '블로그 목록'

3️⃣ 기본 설정 변경 (settings.py)

📌 언어 설정 변경 (한국어로)

LANGUAGE_CODE = 'ko-KR'

📌 템플릿 경로 설정 추가

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR / 'templates'],  # 수정된 부분
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

4️⃣ 목록 뷰 작성 (views.py)

📌 블로그 리스트를 전달하는 View 함수 구성

from django.shortcuts import render
from blog.models import Blog

def blog_list(request):
    blogs = Blog.objects.all()
    context = {'blogs': blogs}
    return render(request, 'blog_list.html', context)

5️⃣ 템플릿 구성 (blog_list.html)

📌 templates/blog_list.html 생성

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>블로그 목록</title>
</head>
<body>
    <h1>블로그 목록</h1>

    {% for blog in blogs %}
        <p>
            <a>{{ blog.title }} - {{ blog.created_at }}</a>
        </p>
    {% endfor %}
</body>
</html>

6️⃣ URL 연결 (urls.py)

📌 blog_list 뷰 함수와 URL 연결

from django.contrib import admin
from django.urls import path
from blog import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('blog/', views.blog_list),
]

✅ 구현 완료 체크리스트

☑️ 슈퍼유저 생성 및 관리자 페이지에서 데이터 생성
☑️ 모델 문자열 표현 및 Meta 클래스 추가
☑️ 블로그 리스트 View 함수 작성
☑️ 템플릿 렌더링 확인
☑️ URL 연결 및 페이지 접속 테스트


💡 관리자 페이지와 템플릿을 잘 활용하면, 초보자도 손쉽게 Django 블로그 시스템을 구축할 수 있어요!