장고 블로그 앱: 모델 만들기 (기본)
1. 블로그 앱 모델이란?
Django의 모델(Model)은 데이터베이스와 소통하며 데이터를 관리하고 구조를 정의하는 핵심 요소이다. 블로그 앱에서 모델은 게시글 같은 데이터 구조를 정의하고 데이터베이스 테이블과 매핑한다. 이를 통해 데이터를 저장, 수정, 삭제, 조회할 수 있다.
모델을 사용하면 데이터베이스와의 상호작용이 간단해진다. Django의 ORM(Object-Relational Mapping)을 활용해 쿼리를 직접 작성하지 않고도 데이터를 효율적으로 조작할 수 있다. 유지보수가 쉽고, 데이터 무결성을 보장하며 복잡한 작업도 간소화된다.
2. 기본 블로그 게시글 모델 예제
블로그 게시글을 정의하는 간단한 Django 모델 예제는 다음과 같다:
# models.py
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=100) # 제목
content = models.TextField() # 게시글 내용
published_at = models.DateTimeField() # 게시글 발행 일시
is_public = models.BooleanField(default=True) # 공개 여부
def __str__(self):
return self.title
필드 설명
- title: CharField. 게시글 제목을 저장. 최대 100자로 제한.
- content: TextField. 긴 텍스트 데이터를 저장.
- published_at: DateTimeField. 게시글의 발행 일시를 저장.
- is_public: BooleanField. 공개 여부를 나타내며 기본값은 True.
- str 메서드: 관리 패널이나 콘솔에서 객체를 문자열로 표현할 때 사용. 여기서는 게시글의 제목을 반환.
데이터 관리의 유연성
이 모델을 통해 Django의 ORM으로 게시글을 쉽게 조작할 수 있다. 예를 들어, Article.objects.create(title="제목", content="내용")을 통해 새로운 게시글을 간단히 생성할 수 있다.
3. 기본 모델 메서드 예제
모델은 데이터 구조 정의뿐 아니라 특정 기능을 수행하는 메서드도 정의할 수 있다.
최근 게시글 확인 메서드 예제
게시글이 최근 7일 이내에 발행되었는지 확인하는 메서드는 다음과 같다.
from datetime import timedelta, datetime
class Article(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
published_at = models.DateTimeField()
is_public = models.BooleanField(default=True)
def is_recent(self):
"""게시글이 최근 7일 이내에 발행되었는지 확인."""
return self.published_at >= datetime.now() - timedelta(days=7)
published_at 값을 현재 시간에서 7일을 뺀 값과 비교하여, 게시글이 최근에 작성되었는지 판단한다. 조건을 충족하면 True, 그렇지 않으면 False를 반환한다.
활용 예시
article = Article.objects.get(id=1)
if article.is_recent():
print(f"{article.title}은 최근에 작성된 게시글이다.")
else:
print(f"{article.title}은 오래된 게시글이다.")
결론
Django 모델은 데이터베이스와의 상호작용을 단순화하고 관리하는 강력한 도구이다. 모델 필드로 데이터 구조를 정의하고, 모델 메서드로 데이터 관련 로직을 처리할 수 있다. 이를 통해 복잡한 데이터 중심 애플리케이션도 효율적으로 구축할 수 있다.
이어지는 글