
Django models.py 데이터를 실제 화면에 출력하는 흐름 정리
Django에서 models.py는 데이터베이스 구조를 정의하는 파일입니다. 하지만 models.py에 모델을 만들었다고 해서 데이터가 자동으로 화면에 표시되는 것은 아닙니다.
실제 웹 페이지에 데이터를 출력하려면 다음 흐름을 연결해야 합니다.
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 데이터를 모두 가져옵니다.
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. 한 줄로 이해하기
마무리
Django에서 models.py만 작성하면 데이터베이스 구조만 만들어진 상태입니다. 실제 화면에 데이터를 보여주려면 views.py, urls.py, templates까지 연결해야 합니다.
처음에는 구조가 복잡해 보일 수 있지만, 기본 흐름은 단순합니다.
데이터를 만든다 → 데이터를 가져온다 → 주소를 연결한다 → 화면에 출력한다
이 흐름만 이해하면 게시판, 인기 게시글 목록, 방명록, 커뮤티니글 같은 대부분의 Django 페이지를 직접 만들 수 있습니다.
이전 글
- Docker Compose 생성기
- Django + Nginx + Docker 서버 구축 전체 구조 정리
- 2편 Docker 설치 방법 총정리 (윈도우 / 리눅스 / 시놀로지 NAS)
- 3편 Django Docker Compose 배포 구성 (Nginx + PostgreSQL 완벽 가이드)
- 4편 Django 프로젝트 생성부터 Production 설정까지|PyCharm + Static 파일 처리
- 5편: Django PostgreSQL 연결 방법|Docker Compose 운영 DB 설정 가이드
- 6편 : Django models.py 설계 방법|DB 테이블 생성과 마이그레이션 기초
첫 댓글을 남겨보세요.