Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Django – 정렬과 페이지 매김 기능으로 모델 데이터를 테이블에 직접 표시하는 방법


이 글에서는 Django에서 모델 데이터를 렌더링하는 테이블을 만드는 방법을 살펴보겠습니다. HTML의 <table> 태그를 일일이 작성하지 않아도, django_tables2라는 가벼운 Django 테이블 라이브러리를 사용하면 모델 데이터를 테이블 형태로 바로 출력할 수 있으며, 컬럼 정렬과 페이지 매김(페이징) 기능까지 기본적으로 제공됩니다.

예제 따라 하기

먼저 프로젝트와 앱을 생성하고 URL 설정을 마친 상태에서 시작합니다.

1. django_tables2 설치

다음 명령어로 패키지를 설치합니다.

pip install django_tables2

2. settings.py 설정

앱 등록 목록에 django_tables2를 추가합니다.

INSTALLED_APPS += ["django_tables2"]

3. models.py – 테스트용 모델 작성

간단한 모델 하나를 만들어 데이터를 담을 준비를 합니다.

from django.db import models

# Create your models here.
class Data(models.Model):
    Name = models.CharField(max_length=100)
    salary = models.CharField(max_length=20)

4. urls.py – 라우팅 연결

URL을 추가하고 테이블 뷰와 연결합니다.

from django.urls import path
from . import views

urlpatterns = [
    path('table', views.TableView.as_view(), name='table')
]

5. views.py – 테이블 클래스와 뷰 작성

Django 폼을 만드는 방식과 거의 동일하게 테이블 클래스를 정의하고, 이를 렌더링할 뷰를 작성합니다.

from .models import Data
import django_tables2 as tables

# 폼을 만들듯이 테이블 클래스를 선언합니다
class SimpleTable(tables.Table):
    class Meta:
        model = Data

# 테이블을 렌더링하는 뷰입니다
class TableView(tables.SingleTableView):
    table_class = SimpleTable
    queryset = Data.objects.all()
    template_name = "table_example.html"

여기서는 Data 모델 기반의 테이블을 만든 뒤, 이를 화면에 출력할 뷰를 정의했습니다. queryset 부분에는 원하는 필터 조건을 넣어 특정 데이터만 가져올 수도 있고, template_name에는 테이블을 보여줄 템플릿 파일을 지정합니다. 한 페이지에 표시할 행 수를 조절하려면 paginate_by = 10처럼 값을 추가하면 됩니다.

6. templates/table_example.html – 템플릿 작성

templates 폴더를 만들고 그 안에 table_example.html 파일을 다음 내용으로 작성합니다.

{% include 'material/includes/material_css.html' %}
{% include 'material/includes/material_js.html' %}
<!DOCTYPE html>
<html>
    <head>
        <title>TUT</title>
    </head>
    <body>
        # 아래 두 줄이 테이블을 렌더링합니다
        {% load django_tables2 %}
        {% render_table table %}
    </body>
</html>

템플릿 상단에서 Material CSS/JS 같은 기본 스타일을 포함시키고, {% load django_tables2 %}로 라이브러리 템플릿 태그를 로드한 후 {% render_table table %}로 views.py에서 만든 테이블을 출력합니다.

실행 결과 확인

개발 서버를 실행한 뒤 /table 경로에 접속하면 아래와 같이 모델 데이터가 테이블로 표시됩니다. 각 컬럼 헤더를 클릭하면 오름차순·내림차순 정렬이 되고, 데이터가 많으면 자동으로 페이지 매김이 적용되는 것도 확인할 수 있습니다.

Django – 정렬과 페이지 매김 기능으로 모델 데이터를 테이블에 직접 표시하는 방법