7편<em>Django</em>models.py<em>데이터</em>화면<em>출력</em>방법|views.p.png

Django models.py 데이터를 실제 화면에 출력하는 흐름 정리

Django에서 models.py는 데이터베이스 구조를 정의하는 파일입니다. 하지만 models.py에 모델을 만들었다고 해서 데이터가 자동으로 화면에 표시되는 것은 아닙니다.

실제 웹 페이지에 데이터를 출력하려면 다음 흐름을 연결해야 합니다.

models.py → views.py → urls.py → templates

1. models.py 역할

models.py는 데이터베이스에 저장할 데이터의 형태를 정의하는 곳입니다. 예를 들어 게시글, 상품, 발주서, 견적서 같은 데이터 구조를 만들 수 있습니다.

from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title

위 코드는 Post라는 게시글 모델을 만든 예시입니다. 이 모델은 제목, 내용, 작성일 데이터를 가질 수 있습니다.

2. views.py에서 데이터 가져오기

views.py는 사용자가 특정 페이지에 접속했을 때 어떤 데이터를 보여줄지 결정하는 파일입니다. models.py에 있는 데이터를 가져와서 template으로 전달하는 역할을 합니다.

from django.shortcuts import render
from .models import Post

def post_list(request):
    posts = Post.objects.all().order_by("-created_at")

    context = {
        "posts": posts,
    }

    return render(request, "blog/post_list.html", context)

여기서 중요한 부분은 Post.objects.all()입니다. 이 코드는 데이터베이스에 저장된 Post 데이터를 모두 가져옵니다.

views.py는 데이터베이스에서 데이터를 가져와서 template에 전달하는 중간 연결 역할을 합니다.

3. urls.py에서 주소 연결하기

urls.py는 사용자가 접속하는 URL 주소와 views.py의 함수를 연결하는 파일입니다.

from django.urls import path
from . import views

app_name = "blog"

urlpatterns = [
    path("posts/", views.post_list, name="post_list"),
]

이제 사용자가 /posts/ 주소로 접속하면 views.py의 post_list 함수가 실행됩니다.

4. templates에서 데이터 출력하기

templates는 실제 사용자에게 보여지는 HTML 화면입니다. views.py에서 전달한 데이터를 HTML 안에서 출력할 수 있습니다.

<h1>게시글 목록</h1>

{% for post in posts %}
  <div class="post-card">
    <h2>{{ post.title }}</h2>
    <p>{{ post.content }}</p>
    <span>{{ post.created_at }}</span>
  </div>
{% empty %}
  <p>등록된 게시글이 없습니다.</p>
{% endfor %}

여기서 posts는 views.py에서 context로 전달한 데이터입니다. Django 템플릿에서는 {% for %} 문법을 사용해서 여러 개의 데이터를 반복 출력할 수 있습니다.

5. 전체 흐름 다시 정리

파일 역할
models.py 데이터베이스 구조 정의
views.py 데이터 조회 후 template에 전달
urls.py URL 주소와 view 함수 연결
templates 전달받은 데이터를 HTML 화면에 출력

6. 한 줄로 이해하기

models.py에서 데이터를 만들고, views.py에서 데이터를 가져오고, urls.py에서 주소를 연결하고, templates에서 화면에 출력한다.

마무리

Django에서 models.py만 작성하면 데이터베이스 구조만 만들어진 상태입니다. 실제 화면에 데이터를 보여주려면 views.py, urls.py, templates까지 연결해야 합니다.

처음에는 구조가 복잡해 보일 수 있지만, 기본 흐름은 단순합니다.

데이터를 만든다 → 데이터를 가져온다 → 주소를 연결한다 → 화면에 출력한다

이 흐름만 이해하면 게시판, 인기 게시글 목록, 방명록, 커뮤티니글 같은 대부분의 Django 페이지를 직접 만들 수 있습니다.

이전 글