본문 바로가기
컴퓨터 활용/노년에 즐기는 코딩

[Django] 장고 프로젝트에서 블로그 앱 만들기

by easyfly 2024. 3. 22.
반응형

장고 프로젝트에서 블로그 앱 만들기

장고 프로젝트에서 블로그 앱을 만드는 과정은 장고의 MTV(Model-Template-View) 패턴을 따릅니다. 이 과정을 통해, 모델을 정의하여 데이터를 저장하고, 템플릿을 사용하여 사용자 인터페이스를 구성하며, 뷰를 통해 앱의 로직을 처리합니다. 다음은 장고 프로젝트에서 블로그 앱을 만드는 단계별 과정입니다.

1. 블로그 앱 생성

장고 프로젝트 디렉터리에서 다음 명령어를 실행하여 블로그 앱을 생성합니다:

python manage.py startapp blog

이 명령어는 blog라는 이름의 앱 디렉토리를 생성하고, 앱을 구성하는 기본 파일들을 포함합니다.

blog 앱 만들기

2. 앱을 프로젝트에 등록

생성된 블로그 앱을 프로젝트의 설정에 추가해야 합니다. 프로젝트의 settings.py 파일을 열고, INSTALLED_APPS 설정에 blog 앱을 추가합니다:

INSTALLED_APPS = [
    # 기존 앱들
    'blog',  # 이 줄을 추가
]

blog 앱을 프로젝트에 추가

 

3. 모델 정의

블로그 포스트를 위한 모델을 blog/models.py 파일에 정의합니다. 예를 들어, 포스트 제목, 내용, 작성일, 발행 여부 등의 필드를 포함할 수 있습니다:

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

class Post(models.Model):
    title = models.CharField(max_length=200)
    text = models.TextField()
    created_date = models.DateTimeField(default=timezone.now)
    published_date = models.DateTimeField(blank=True, null=True)

    def publish(self):
        self.published_date = timezone.now()
        self.save()

    def __str__(self):
        return self.title

모델 정의

 

4. 데이터베이스 마이그레이션

모델을 정의한 후, 데이터베이스에 테이블을 생성하기 위해 마이그레이션을 실행합니다:

python manage.py makemigrations blog
python manage.py migrate blog

데이터베이스 마이그레이션

 

5. 관리자 페이지에서 모델 관리

블로그 포스트 모델을 관리자 페이지에서 관리할 수 있도록 blog/admin.py 파일을 수정합니다:

from django.contrib import admin
from .models import Post

admin.site.register(Post)

관리자 페이지에서 모델 관리

 

6. 뷰 생성

블로그 포스트를 보여주기 위한 뷰를 blog/views.py 파일에 생성합니다. 예를 들어, 모든 포스트를 리스트로 보여주는 간단한 뷰는 다음과 같습니다:

from django.shortcuts import render
from .models import Post

def post_list(request):
    posts = Post.objects.filter(published_date__isnull=False).order_by('published_date')
    return render(request, 'blog/post_list.html', {'posts': posts})

뷰 생성

 

7. 템플릿 생성

뷰에서 사용할 템플릿을 blog/templates/blog/post_list.html에 생성합니다. 템플릿에서는 뷰에서 전달한 포스트 목록을 반복하여 표시합니다:

<!DOCTYPE html>
<html>
<head>
    <title>Blog</title>
</head>
<body>
    <div>
        <h1>Blog Posts</h1>
        {% for post in posts %}
            <div>
                <h2>{{ post.title }}</h2>
                <p>{{ post.text }}</p>
            </div>
        {% endfor %}
    </div>
</body>
</html>

템플릿 생성

 

8. URLconf 설정

블로그 앱의 URL을 설정하기 위해 blog/urls.py 파일을 생성하고, 뷰와 URL 패턴을 연결합니다. 프로젝트의 urls.py 파일에도 블로그 앱의 URLconf를 포함시켜야 합니다:

# blog/urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('', views.post_list, name='post_list'),
]

blog/urls.py 생성

 

그리고 프로젝트의 urls.py 파일에서 blog.urls를 포함시킵니다:

# 프로젝트의 urls.py
from django.urls import include, path

urlpatterns = [
    # 다른 URL 패턴들
    path('blog/', include('blog.urls')),
]

프로젝트 urls.py파일에 blog.urls 포함

 

이 단계를 완료하면, 장고 프로젝트에 블로그 앱이 성공적으로 추가되고, 블로그 포스트를 관리하고 표시할 수 있습니다.

반응형

댓글