Chapter 4-1 Django [블로그] 상세페이지에 작성자 정보 추가하기

2025. 5. 7. 10:26·Django
목차
  1. 🧩 Chapter 04. [블로그] 상세페이지에 작성자 정보 추가하기
  2. 1️⃣ Blog 모델에 작성자(author) 컬럼 추가
  3. 🔎 on_delete 옵션 설명
  4. 2️⃣ 마이그레이션 시 기존 데이터 처리 방법
  5. 3️⃣ 상세페이지 템플릿에 작성자 정보 출력
  6. 4️⃣ 블로그 목록 페이지에도 작성자 표시
  7. ✅ 마무리 체크리스트

🧩 Chapter 04. [블로그] 상세페이지에 작성자 정보 추가하기

1️⃣ Blog 모델에 작성자(author) 컬럼 추가

📌 Django에서 제공하는 인증 유저 모델을 불러와 author 필드에 연결합니다.

# blog/models.py
from django.contrib.auth import get_user_model  # ✅ 유저 모델 불러오기
from django.db import models

User = get_user_model()  # 현재 프로젝트에서 사용하는 User 모델 반환

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('본문')

    # ✅ 작성자 필드 추가
    author = models.ForeignKey(User, on_delete=models.CASCADE)

    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 = '블로그 목록'

🔎 on_delete 옵션 설명

  • CASCADE: 유저 삭제 시 관련 블로그도 함께 삭제
  • PROTECT: 유저 삭제 불가 (외래키 참조 중이면 에러 발생)
  • SET_NULL: 유저 삭제 시 author를 NULL로 설정 (필드에 null=True 필요)

2️⃣ 마이그레이션 시 기존 데이터 처리 방법

author는 null이 허용되지 않기 때문에 기존 블로그 데이터에 author 값을 설정해야 함

💡 해결 방법 2가지:

  1. 1회성 디폴트 값 입력 (예: 슈퍼유저 ID = 1)
  2. 마이그레이션 후 수동으로 DB 편집

📌 강의에서는 1번 방식 사용 → 마이그레이션 시 1을 입력


3️⃣ 상세페이지 템플릿에 작성자 정보 출력

<!-- templates/blog_detail.html -->
<h1>{{ blog.title }}</h1>
<div style="text-align: right">
    {{ blog.author.username }}  <!-- 작성자명 출력 -->
</div>
<hr>
<p>{{ blog.content }}</p>
<a href="{% url 'blog_list' %}">목록으로 돌아가기</a>

4️⃣ 블로그 목록 페이지에도 작성자 표시

<!-- templates/blog_list.html -->
<h1>블로그 목록</h1>
{% for blog in blogs %}
    <p>
        <a href="{% url 'blog_detail' blog.pk %}">
            {{ blog.title }} <span>({{ blog.author.username }})</span> -
            <small>{{ blog.created_at|date:"Y-m-d" }}</small>
        </a>
    </p>
{% endfor %}

📌 blog.author.username을 통해 ForeignKey 필드의 유저 이름 출력


✅ 마무리 체크리스트

항목 설명

작성자 필드 추가 ✅ author = models.ForeignKey(User, ...)
기존 데이터 처리 ✅ 마이그레이션 시 디폴트 유저 ID 입력
상세페이지 수정 ✅ 작성자명 출력 코드 추가
목록페이지 수정 ✅ 블로그마다 작성자 표시

💬 작성자 정보가 표시됨으로써, 누가 작성한 글인지 명확히 알 수 있어 블로그 서비스의 신뢰도와 구조적 완성도를 높일 수 있습니다.

'Django' 카테고리의 다른 글

Chapter 4-4 Django 블로그 수정 기능 구현 (작성자만 수정 가능)  (0) 2025.05.07
Chapter 4-3 Django 작성 기능 만들기 with Form  (0) 2025.05.07
Chapter 3-7 Django 회원가입(SignUp) 및 로그인(Login) 페이지 만들기  (0) 2025.05.06
Chapter 3-6 Django 회원가입(SignUp) 페이지 만들기  (0) 2025.05.06
Chapter 3-5 Django 로그아웃 기능 만들기  (0) 2025.05.06
  1. 🧩 Chapter 04. [블로그] 상세페이지에 작성자 정보 추가하기
  2. 1️⃣ Blog 모델에 작성자(author) 컬럼 추가
  3. 🔎 on_delete 옵션 설명
  4. 2️⃣ 마이그레이션 시 기존 데이터 처리 방법
  5. 3️⃣ 상세페이지 템플릿에 작성자 정보 출력
  6. 4️⃣ 블로그 목록 페이지에도 작성자 표시
  7. ✅ 마무리 체크리스트
'Django' 카테고리의 다른 글
  • Chapter 4-4 Django 블로그 수정 기능 구현 (작성자만 수정 가능)
  • Chapter 4-3 Django 작성 기능 만들기 with Form
  • Chapter 3-7 Django 회원가입(SignUp) 및 로그인(Login) 페이지 만들기
  • Chapter 3-6 Django 회원가입(SignUp) 페이지 만들기
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (597)
      • Python (32)
      • 프로젝트 (43)
      • 과제 (25)
      • Database (40)
      • 멘토링 (10)
      • 특강 (29)
      • 기술블로그 (32)
      • 기술블로그-Django편 (136)
      • 기술블로그-Flask편 (35)
      • AI 분석 (4)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (61)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
Chapter 4-1 Django [블로그] 상세페이지에 작성자 정보 추가하기

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.