HTML5/반응형 웹

업로드된 시 목록 보기 (ListView 만들기)

forSilver 2025. 7. 14. 14:47
반응형

 

📘 『시마당 프로젝트 따라하기』

7장. 업로드된 시 목록 보기 (ListView 만들기)

작성자: easyfly
작성일: 2025년 7월 14일


🟧 1. 시 목록 보기란?

  • 업로드된 시를 테이블 또는 박스 형태로 나열하는 기능입니다.
  • 시제목, 작가, 등록일자 등을 확인할 수 있습니다.
  • 사용자에게 작성 결과를 시각적으로 보여주는 핵심 기능입니다.

🟦 2. 뷰 함수 작성 (기본 리스트 뷰)

📁 위치

madang/poem/views.py

📄 코드 추가

from .models import Poem

def poem_list(request):
    poems = Poem.objects.all().order_by('-created_at')  # 최신순
    return render(request, 'poem/poem_list.html', {'poems': poems})

 

함수 poem_list 추가


🟧 3. URL 연결

📁 위치

madang/poem/urls.py

📄 코드 추가

urlpatterns += [
    path('list/', views.poem_list, name='poem_list'),
]

새로운 패스 추가


🟧 4. 템플릿 작성

📁 위치

madang/poem/templates/poem/poem_list.html

📄 코드 예시

<!DOCTYPE html>
<html>
<head>
    <title>시 목록</title>
</head>
<body>
    <h1>시 목록 (전자책 출간용)</h1>

    {% if poems %}
        <ul>
            {% for poem in poems %}
                <li>
                    <strong>{{ poem.title }}</strong><br>
                    <em>{{ poem.author.name }}</em><br>
                    <small>{{ poem.created_at|date:"Y년 m월 d일 H:i" }}</small><br>
                    <p>{{ poem.content|linebreaks }}</p>
                    <hr>
                </li>
            {% endfor %}
        </ul>
    {% else %}
        <p>아직 등록된 시가 없습니다.</p>
    {% endif %}

    <p><a href="{% url 'upload_poem' %}">시 쓰러 가기</a></p>
</body>
</html>

🧪 5. 결과 확인

✅ 서버 실행

python manage.py runserver 0:8000

✅ 접속 주소

http://<EC2 IP>:8000/poem/list/

🔍 결과 화면

  • 시가 여러 편 나열되며,
  • 제목 / 작가 / 작성일 / 내용이 순서대로 출력됩니다.
  • "시 쓰러 가기" 버튼을 눌러 다시 입력 화면으로 돌아갈 수 있습니다.

📝 정리

항목 완료 여부
시 목록 뷰 함수 생성 ✅ 완료
시 목록 템플릿 작성 ✅ 완료
URL 라우팅 연결 ✅ 완료
최신순 정렬 및 출력 확인 ✅ 완료

다음 예고 – 『8장. 전자책 출간 준비: EPUB 파일 자동 생성』

  • 업로드된 시들을 모아 하나의 전자책 파일(EPUB)로 변환합니다.
  • 다운로드 가능한 .epub 파일을 만들어 시니어 작가의 작품집을 자동 출간합니다.