반응형

Tailwind CSS 최신버전 설치와 사용법 가이드 (Vite 프로젝트 기준)

Tailwind 설치가 복잡하다고요?
Vite와 함께라면 깔끔하고 빠르게 세팅할 수 있어요.
최신버전까지 완벽하게 반영된 설치 가이드를 지금 만나보세요!
반응형

 

안녕하세요, 여러분 😊

요즘 많은 분들이 Vite + Tailwind CSS 조합을 많이 사용하시더라고요.

빠른 번들링 속도, 모던한 설정, 게다가 유연한 확장성까지!

그런데 막상 시작하려고 하면 설치 방법이 헷갈릴 수 있어요.

그래서 오늘은 Vite로 프로젝트를 생성한 후 Tailwind CSS 최신버전을 적용하는 가장 깔끔한 방법을 정리해 드릴게요.

개발 초보자분들도 따라만 하면 OK!

실전에서 바로 써먹을 수 있는 사용법까지 친절하게 알려드립니다 💪

 

1. Vite 프로젝트 초기화 ⚙️

Tailwind CSS를 제대로 활용하려면 먼저 Vite 프로젝트부터 잘 세팅하는 게 중요해요.

요즘엔 CRA보다 Vite를 더 많이 쓰는 추세잖아요.

속도 차이가 어마어마하니까요. 그럼, 터미널부터 열고 같이 따라가 봅시다!

🚀 Vite 프로젝트 생성 명령어

우선 Node.js가 설치되어 있어야 해요. Node가 없다면 Node.js 공식사이트에서 설치 먼저 해주세요.

 

Node.js — 어디서든 JavaScript를 실행하세요

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

 

npm create vite@latest tailwind-vite-app -- --template vanilla
  • tailwind-vite-app은 프로젝트 이름이에요. 원하는 이름으로 바꿔도 됩니다.
  • --template vanilla는 React 같은 프레임워크 없이 순수 HTML/JS 기반으로 구성된 템플릿이에요.

💡 명령 실행 후 폴더 이동 및 의존성 설치

cd tailwind-vite-app
npm install

여기까지 진행하면 Vite 프로젝트 뼈대가 완성됩니다.

구조는 심플해요.

index.html, main.js, 그리고 vite.config.js 파일이 핵심이죠.

📁 기본 디렉토리 구조

tailwind-vite-app/
├─ index.html
├─ main.js
├─ vite.config.js
├─ package.json
└─ node_modules/

이제 진짜 준비는 끝났어요.

다음 단계부터는 Tailwind CSS를 설치하고 설정하는 본격적인 작업이 들어갑니다!

 

 

2. Tailwind CSS 최신버전 설치 📦

자, 이제 본격적으로 Tailwind CSS를 설치할 차례입니다.

최신버전으로 설정하려면 몇 가지 패키지를 한 번에 설치해야 해요.

걱정 마세요. 명령어 하나면 끝입니다.

📦 설치 명령어

npm install -D tailwindcss postcss autoprefixer
  • tailwindcss: 핵심 프레임워크입니다.
  • postcss: Tailwind의 처리 과정을 도와주는 도구에요.
  • autoprefixer: 브라우저 호환성을 위한 자동 접두사 처리기입니다.

🛠️ 초기화 명령어로 설정 파일 생성

npx tailwindcss init -p

이 명령어를 실행하면 프로젝트 루트에 tailwind.config.jspostcss.config.js 파일이 자동으로 생겨요.

둘 다 Tailwind 작동에 꼭 필요한 설정 파일입니다.

📁 생성된 파일 구조

tailwind-vite-app/
├─ tailwind.config.js
└─ postcss.config.js

여기까지 문제 없이 따라오셨다면 거의 반은 끝난 거예요.

다음은 Tailwind가 적용될 수 있도록 실제 설정을 커스터마이징하는 단계로 넘어가 볼게요.

 

 

3. Tailwind 설정 파일 구성 ✏️

이제 우리가 만든 프로젝트에서 Tailwind CSS가 제대로 작동하도록 설정을 커스터마이징해볼게요. tailwind.config.js 파일 안에서 중요한 건 content 속성입니다.

이 속성은 Tailwind가 어떤 파일을 분석해서 클래스를 적용할지 알려주는 부분이에요.

📄 tailwind.config.js 파일 수정하기

// tailwind.config.js
export default {
  content: [
    "./index.html",
    "./src/**/*.{js,ts,jsx,tsx}"
  ],
  theme: {
    extend: {},
  },
  plugins: [],
}

이렇게 설정하면 index.html뿐만 아니라, src 폴더 내 모든 JS/TS/React 파일까지 Tailwind 클래스를 스캔합니다.

🧩 참고: JSX/TSX 사용 시 주의사항

React 기반 프로젝트를 사용할 경우 파일 확장자가 .jsx.tsx일 수 있으니 꼭 포함시켜야 해요.

안 그러면 Tailwind 클래스가 적용되지 않아 “왜 안 되지?” 하고 머리 싸매는 일이 생깁니다 😅

🗂 postcss.config.js는 그대로 두면 OK

postcss.config.js 파일은 Tailwind 설치 시 자동으로 아래와 같이 세팅돼요.

별도로 수정할 필요는 없습니다.

// postcss.config.js
export default {
  plugins: {
    tailwindcss: {},
    autoprefixer: {},
  },
}

이제 설정은 모두 끝났습니다!

다음 단계에선 실제로 Tailwind 클래스를 적용해 보고 브라우저에서 확인해 볼 거예요.

 

 

4. 글로벌 스타일 세팅 및 적용 🎨

Tailwind CSS가 프로젝트에 제대로 적용되려면 index.css 또는 style.css 같은 스타일 파일에서 Tailwind의 기본 디렉티브를 불러와야 해요.

이제 진짜 CSS와 만나는 순간이죠!

📄 style.css 파일 만들기

src 폴더 아래에 style.css 파일을 만들고, 다음과 같이 입력해 주세요.

@tailwind base;
@tailwind components;
@tailwind utilities;

이 세 가지 디렉티브는 Tailwind의 핵심이에요. 각각의 역할은 아래와 같아요 👇

디렉티브 설명
@tailwind base Reset과 Normalize 스타일이 포함된 기본 스타일 세트
@tailwind components 사용자 정의 가능한 컴포넌트 스타일 정의
@tailwind utilities Tailwind의 핵심 유틸리티 클래스들 포함

📌 main.js에서 스타일 불러오기

// src/main.js 또는 main.ts
import './style.css'

이 한 줄이 있어야 Tailwind CSS가 브라우저에 반영돼요.

의외로 이걸 빼먹어서 “왜 안되지?” 하는 분들 많더라고요 😅

 

이제 브라우저에서 Tailwind 클래스가 적용된 모습까지 확인할 수 있습니다!

다음 단계에선 진짜 Tailwind로 화면에 스타일을 입혀보는 실전 예제를 다뤄볼게요 💡

 

 

5. 실전 사용 예제 🧪

이제 준비는 끝났고, 진짜 재미있는 시간!

Tailwind CSS를 활용해서 예쁜 UI를 만들어봅시다.

이 섹션에서는 단순한 카드 컴포넌트를 예제로 사용해 Tailwind의 유틸리티 클래스가 어떻게 동작하는지 보여드릴게요.

💳 Tailwind로 만든 카드 UI 예제

<div class="max-w-sm mx-auto bg-white shadow-md rounded-lg overflow-hidden mt-10">
  <img class="w-full h-48 object-cover" src="https://source.unsplash.com/random/400x200" alt="랜덤 이미지">
  <div class="p-6">
    <h2 class="text-xl font-bold text-gray-800 mb-2">Tailwind Card</h2>
    <p class="text-gray-600">이 카드는 Tailwind CSS만으로 스타일링 되었습니다. 정말 깔끔하죠?</p>
    <button class="mt-4 bg-blue-500 text-white px-4 py-2 rounded hover:bg-blue-600 transition">자세히 보기</button>
  </div>
</div>

위 코드를 index.html<body> 안에 붙여넣고 실행해보세요.

놀라운 건 단 한 줄의 CSS 코드도 직접 작성하지 않았다는 것이죠!

📌 실전 적용 포인트 요약

  • flex, grid 같은 레이아웃 클래스도 직관적으로 사용 가능
  • 반응형 디자인은 sm, md, lg, xl 프리픽스로 처리 가능
  • 다크모드도 dark: 접두사 하나로 해결

Tailwind CSS는 그냥 “디자인 프레임워크”가 아니라, 생산성과 디자인 자유도를 동시에 만족시키는 도구예요.

여러분도 지금 바로 실습해보세요!

 

 

6. 자주 발생하는 문제 해결법 🧯

Tailwind를 적용하다 보면, 생각보다 자잘한 문제들이 종종 발생하죠.

“왜 클래스가 적용이 안 되지?” 같은 고민, 한 번쯤 해보셨을 거예요.

자주 발생하는 문제들과 그 해결책을 정리해봤어요.

❗ 클래스가 적용되지 않아요

  • style.css@tailwind 디렉티브가 빠졌는지 확인
  • main.js에서 style.css를 불러오지 않았는지 확인
  • tailwind.config.jscontent 경로가 누락되었는지 점검

❗ 빌드시 적용 안 되는 문제

Vite의 빌드 모드에서는 필요 없는 클래스가 자동으로 제거돼요.

근데 실제로는 동적으로 쓰는 클래스가 잘려나갈 수도 있거든요.

이럴 땐 Safelist 기능을 이용해서 강제로 포함시켜야 해요.

// tailwind.config.js
module.exports = {
  content: [...],
  safelist: ['bg-red-500', 'text-xl', 'md:grid'],
  ...
}

🔍 기타 팁

  • 브라우저 캐시를 지우고 새로고침 해보세요 (Ctrl+Shift+R)
  • VSCode를 쓰고 있다면 Tailwind IntelliSense 확장도 함께 쓰면 편리합니다!

처음엔 어렵게 느껴질 수도 있지만, 자꾸 해보다 보면 Tailwind는 어느 순간 "손에 붙는" 툴이 됩니다.

가볍게 실수하고 고치면서 익숙해지세요!

 

 

마무리 🎁

지금까지 Vite 프로젝트에서 Tailwind CSS 최신버전 설치와 사용법을 단계별로 알아봤습니다.

복잡해 보였던 Tailwind 설치 과정도 이렇게 정리해보니 생각보다 간단하죠?

Vite의 빠른 빌드 속도와 Tailwind의 유연한 스타일링이 만나면 정말 강력한 개발 환경이 완성됩니다.

이제 여러분도 Tailwind를 활용한 멋진 UI 컴포넌트를 만들 준비가 됐습니다.

이 글이 여러분의 프론트엔드 개발 여정에 조금이나마 도움이 되었다면 정말 기쁠 것 같아요!

다음 글에서는 Tailwind로 반응형 웹 만들기도 다뤄볼 예정이니 기대해주세요 📱💻

 

Tailwind는 결국 직관실전이 전부입니다.

직접 써보며 감을 잡고, 자주 활용해보세요! 그게 최고의 학습법입니다.

반응형
반응형

Django 모델 생성과 데이터 출력 완전 정복

데이터를 눈으로 확인할 수 있어야 진짜 실력이죠!
Django 모델부터 화면 출력까지 직접 해보는 실습, 지금 시작해볼까요?

 

 

안녕하세요, 여러분!

오늘은 Django 프로젝트에서 데이터 모델을 정의하고, 그 데이터를 실제 웹 페이지에서 출력하는 전 과정을 함께 살펴보려 해요.

예전엔 막연하게 느껴졌던 모델 정의와 마이그레이션, 그리고 admin에서 데이터 입력하고 템플릿에서 출력하는 흐름이 이제는 훨씬 친숙하게 느껴질 거예요.

이 글에서는 TodoItem 또는 BlogPost 같은 간단한 모델을 정의해서, admin 사이트에서 데이터를 넣고, 뷰 함수와 템플릿을 통해 화면에 출력하는 과정까지 단계별로 진행해볼 거예요.

 

1. 모델 정의하기 🧱

자, 이제 Django에서 가장 핵심이라고 할 수 있는 모델(Model)을 만들어볼 차례예요.

모델은 데이터베이스 테이블과 1:1로 매칭되는 클래스로, 우리가 다룰 데이터를 어떤 형태로 저장하고 사용할지를 정의해줍니다.

📝 모델 클래스 생성

예를 들어, 간단한 할 일(Todo) 목록을 만들고 싶다고 해봅시다.

이럴 땐 다음처럼 TodoItem 모델을 정의할 수 있어요:

from django.db import models

class TodoItem(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

 

이 모델을 한 줄씩 살펴보면 다음과 같습니다:

필드 설명
title 할 일의 제목 (문자열, 최대 200자)
content 자세한 설명을 담을 수 있는 텍스트 필드
created_at 데이터가 생성된 시간 (자동 저장)

📁 모델 파일 저장 위치

모델 클래스는 보통 각 앱의 models.py 파일에 작성합니다.

예를 들어, 앱 이름이 todo라면 todo/models.py에 위 코드를 추가해 주세요.

  • models.py는 각 앱 안에 존재하며 데이터 구조를 정의하는 핵심 파일이에요.
  • __str__() 메서드는 admin이나 쉘에서 객체를 문자열로 표시할 때 유용합니다.

이렇게 간단한 모델 하나만 정의해도, Django는 이걸 기반으로 데이터베이스 테이블을 만들고 다양한 기능을 자동으로 제공해줘요. 정말 멋지지 않나요?

 

 

2. 마이그레이션 수행하기 🔄

모델을 만들었다고 해서 곧바로 데이터베이스에 테이블이 생기는 건 아니에요.

Django에서는 마이그레이션(migration)이라는 과정을 거쳐야 모델의 정의가 실제 데이터베이스 테이블로 반영됩니다.

🛠️ 마이그레이션 순서

  1. python manage.py makemigrations - 모델 변경 사항을 기반으로 마이그레이션 파일을 생성해요.
  2. python manage.py migrate - 실제로 데이터베이스에 테이블을 만들거나 수정해요.

직접 터미널에서 한 번 입력해볼까요?

# 마이그레이션 파일 생성
$ python manage.py makemigrations

# DB에 실제 반영
$ python manage.py migrate

 

명령어 실행 후 아래와 같이 출력되면 성공입니다 🎉

Migrations for 'todo':
  todo/migrations/0001_initial.py
    - Create model TodoItem

Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions, todo
Running migrations:
  Applying todo.0001_initial... OK

🚧 잠깐! 이런 에러가 나올 수 있어요

  • App 'todo' could not be found → settings.py에 앱 등록 안 했을 가능성!
  • No changes detected → 모델을 수정한 적이 없을 수도 있어요.

마이그레이션은 한 번만 하고 끝나는 게 아니라, 모델에 변화가 생길 때마다 반복하게 될 작업입니다.

앞으로 자주 만나게 될 명령어니까 익숙해지는 게 좋아요!

 

 

3. Admin 사이트에 모델 등록하기 ⚙️

모델을 만들고 마이그레이션까지 완료했다면, 이제는 데이터를 직접 추가해볼 수 있어야겠죠?

Django는 기본적으로 Admin 사이트라는 강력한 기능을 제공합니다.

이걸 통해 직접 데이터를 추가하거나 수정할 수 있어요.

✅ 모델을 Admin에 등록하기

우선 admin.py 파일을 열어 아래처럼 코드를 추가해 주세요.

from django.contrib import admin
from .models import TodoItem

admin.site.register(TodoItem)

 

이렇게 하면 Admin 페이지에서 TodoItem 모델을 볼 수 있게 됩니다. 아주 간단하죠?

4. 슈퍼유저 생성 및 데이터 추가 👑

Admin에 로그인하려면 슈퍼유저(superuser) 계정을 먼저 만들어야 해요.

아래 명령어를 입력해 관리자 계정을 만들어 봅시다.

$ python manage.py createsuperuser

 

이제 서버를 실행하고 http://127.0.0.1:8000/admin에 접속해보세요.

  • 로그인하면 TodoItem이 목록에 보일 거예요.
  • 클릭해서 새 데이터도 직접 입력할 수 있답니다.

이제 모델을 만들고, Admin에 등록하고, 데이터를 입력하는 기본적인 백엔드 흐름을 완성했어요!

다음은 이 데이터를 뷰(View)템플릿(Template)을 통해 웹페이지에서 출력해보는 단계입니다.

 

 

5. 뷰 함수에서 QuerySet으로 데이터 조회 📦

Admin에서 입력한 데이터를 웹 페이지에 출력하려면 뷰(View) 함수에서 모델로부터 데이터를 조회해야 해요.

이때 사용하는 게 바로 Django의 ORM 기능 중 하나인 QuerySet입니다.

💡 QuerySet이란?

QuerySet은 데이터베이스에서 가져온 객체들의 집합이에요.

SQL을 직접 쓰지 않고 파이썬 문법으로 데이터를 조회할 수 있도록 도와줍니다.

예를 들어 TodoItem.objects.all()은 TodoItem 테이블의 모든 데이터를 불러오는 명령어랍니다.

🛠 뷰 함수에서 QuerySet 사용하기

자, 이제 views.py 파일에서 실제로 데이터를 가져오는 코드를 작성해볼게요.

from django.shortcuts import render
from .models import TodoItem

def todo_list(request):
    todos = TodoItem.objects.all()  # QuerySet: 전체 데이터 조회
    return render(request, 'todo/list.html', {'todos': todos})
  • TodoItem.objects.all()은 등록된 모든 할 일을 가져옵니다.
  • render() 함수는 데이터를 HTML 템플릿과 함께 반환해요.

🔗 URLconf에 뷰 연결하기

뷰 함수를 만들었으면 해당 함수에 접근할 수 있도록 urls.py에도 경로를 연결해줘야 합니다. 다음 코드를 todo/urls.py 또는 프로젝트의 urls.py에 추가해 주세요.

from django.urls import path
from . import views

urlpatterns = [
    path('todos/', views.todo_list, name='todo_list'),
]

이제 브라우저에서 http://127.0.0.1:8000/todos/ 주소로 접속하면, 뷰 함수가 동작하며 템플릿에 데이터를 전달하게 됩니다.

🧠 실전 활용 팁

  • .order_by('-created_at')으로 최신 항목부터 정렬할 수 있어요.
  • .filter()를 활용하면 특정 조건만 골라볼 수도 있어요.

지금까지 배운 내용은 Django의 데이터 흐름에서 가장 중요한 부분 중 하나입니다. 뷰 함수는 데이터와 템플릿 사이의 다리 역할을 하며, 이를 제대로 이해해야 Django를 진짜 잘 다룰 수 있게 돼요.

6. 템플릿에서 목록 출력 및 브라우저 확인 🖥️

이제 마지막 단계예요! 뷰에서 전달한 QuerySet 데이터를 템플릿 파일에 출력해보겠습니다. 이렇게 하면 우리가 만든 모델 데이터를 브라우저에서 직접 볼 수 있게 되죠.

📄 템플릿 파일 생성하기

우선 앱 폴더 안에 templates 폴더를 만들고, 그 안에 todo 폴더를 생성한 후 list.html이라는 파일을 만듭니다. 예시 경로는 다음과 같아요:

todo/
 ├── templates/
 │    └── todo/
 │         └── list.html

그리고 list.html에는 아래처럼 작성해 주세요.



  
  Todo 목록

할 일 목록
    {% for item in todos %}
        {{ item.title }}

        {{ item.content }}

        {{ item.created_at }}
      
    {% empty %}아직 등록된 항목이 없습니다.
    {% endfor %}
  


Django의 템플릿 언어인 {% for %}{{ }}를 활용해서 데이터를 반복 출력하고 있어요. 실제 데이터가 없을 경우엔 {% empty %} 블럭이 작동합니다.

📌 설정 점검 리스트

  • settings.pyTEMPLATES 설정에 'APP_DIRS': True가 되어 있는지 확인
  • 앱 이름이 INSTALLED_APPS에 포함되어 있어야 함

🌐 브라우저에서 확인해보기

이제 python manage.py runserver 명령으로 개발 서버를 실행하고, 브라우저에서 http://127.0.0.1:8000/todos/ 주소로 접속해보세요.

등록한 데이터가 목록으로 출력된다면... 성공입니다! 🎉

이 과정을 통해 데이터베이스 모델 생성 → Admin 등록 및 입력 → View에서 데이터 조회 → Template에서 출력까지 전체 웹 애플리케이션 흐름을 완성해본 셈이에요.

마무리하며 🧩

지금까지 우리는 Django에서 모델을 생성하고 데이터를 출력하는 전 과정을 순차적으로 경험해 봤습니다. 처음에는 복잡하게 느껴질 수 있지만, 한번 흐름을 타고 나면 의외로 논리적이고 직관적인 걸 느끼셨을 거예요.

전체 흐름을 요약하면 다음과 같습니다:

  1. 모델 정의 (models.py)
  2. 마이그레이션으로 DB에 반영
  3. Admin에 모델 등록 및 슈퍼유저 생성
  4. 뷰 함수에서 QuerySet으로 데이터 조회
  5. 템플릿에 데이터 넘기고 브라우저에 출력

이제 여러분은 Django 웹 개발에서 가장 기본이 되는 MVT(Model-View-Template) 패턴의 흐름을 완전히 이해한 셈입니다. 앞으로 더 복잡한 프로젝트를 다룰 때도 이 흐름은 그대로 유지되며, 이 토대를 기반으로 기능만 점점 확장되니까요.

다음 글에서는 모델 간 관계 설정(ForeignKey 등)과 리스트 정렬, 필터링 등의 고급 QuerySet 사용법까지 이어서 다뤄볼 예정이에요. 계속해서 함께 성장해봐요! 😊

반응형
반응형

Django 데이터베이스 연동과 ORM 이해

Django 프로젝트에서 데이터를 저장하고 꺼내 쓰는 게 어렵게 느껴지시나요?
ORM과 관리자 페이지의 마법을 경험해보세요!

 

 

안녕하세요, 여러분! 😊

웹 애플리케이션을 만들다 보면 사용자 데이터를 저장하거나, 게시글을 등록하고 수정하는 기능이 꼭 필요하죠.

이럴 때 가장 중요한 게 바로 데이터베이스 연동입니다.

이번 포스팅에서는 Django에서 가장 기본적으로 사용하는 SQLite 설정부터, 데이터를 자유자재로 다룰 수 있게 해주는 ORM(Object-Relational Mapping)의 개념과 사용법을 살펴볼 거예요.

또한 Django의 강력한 무기 중 하나인 Admin 페이지를 통해 데이터를 관리하는 방법까지 같이 다루겠습니다.

처음엔 조금 생소할 수 있지만, 하나씩 따라오다 보면 데이터베이스가 생각보다 친숙하게 느껴질 거예요. 😊

자, 그럼 본격적으로 시작해볼까요?

 

1. SQLite 설정과 마이그레이션 개념 🧱

Django는 기본적으로 SQLite라는 가볍고 사용하기 쉬운 데이터베이스를 기본으로 제공합니다.

설치할 것도 없고, 별도의 서버 없이 바로 사용 가능하다는 점에서 개발자들 특히 초보자에게 아주 좋은 선택이죠.

📂 settings.py에서 데이터베이스 확인하기

settings.py 파일을 열면 아래와 같이 DATABASES 설정이 이미 되어 있을 거예요.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

 

이게 바로 SQLite를 사용하는 기본 설정입니다.

별다른 작업 없이 바로 데이터베이스 기능을 쓸 수 있게 도와주는 설정이죠.

🔧 마이그레이션이란 무엇인가요?

Django에서 모델을 만들었다고 해서 바로 DB에 반영되는 건 아니에요.

모델의 변경사항을 데이터베이스에 적용하려면 마이그레이션(Migration) 작업을 해야 합니다.

이 과정을 쉽게 설명하면 이래요:

  • 모델을 만들면 그걸 반영할 SQL 코드가 자동으로 생성됨 → makemigrations
  • 생성된 SQL 코드를 실제 DB에 반영 → migrate

터미널에서 아래 명령어를 실행해보세요.

python manage.py makemigrations
python manage.py migrate

이제 모델에 정의한 구조대로 테이블이 데이터베이스에 생성됩니다. 짠! 너무 어렵지 않죠?

📋 요약 테이블

개념 설명
SQLite Django 기본 데이터베이스로, 가볍고 별도 설치가 필요 없음
makemigrations 모델 변경 사항을 기반으로 마이그레이션 파일 생성
migrate 생성된 마이그레이션을 실제 데이터베이스에 적용

 

2. Django 모델 정의 방법과 필드 종류 📝

웹 서비스에서 정보를 저장하고 관리하려면 모델(Model)을 정의해야 합니다.

Django에서는 이 모델이 곧 데이터베이스 테이블과 1:1로 매칭돼요.

각 모델은 Python 클래스 형태로 정의되며, 클래스의 속성 하나하나가 데이터베이스의 컬럼이 됩니다.

📌 모델 클래스 예시

from django.db import models

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

위 예시는 Post라는 게시글 모델입니다.

title, content, created_at이라는 세 개의 필드를 가지고 있고, 각각 문자열, 긴 텍스트, 생성 시간 정보를 저장해요.

🔍 주요 필드(Field) 종류 알아보기

필드 이름 설명
CharField 짧은 문자열 저장. max_length 필수 지정
TextField 긴 텍스트 저장 (제한 없음)
IntegerField 정수 값 저장
DateTimeField 날짜/시간 저장. auto_now_add 또는 auto_now로 자동 설정 가능
BooleanField True/False 값 저장

💡 유용한 모델 설정 옵션들

  • verbose_name: 필드의 이름을 관리자 페이지에서 보기 쉽게 설정
  • default: 기본값 지정 가능
  • null, blank: 비워도 되는지 여부 설정

모델은 단순히 테이블을 정의하는 걸 넘어서, Django 전반의 데이터 흐름을 담당해요.

앞으로의 기능 구현에서도 계속 활용되니, 지금 확실하게 익혀두는 걸 추천드립니다!

 

 

3. ORM과 QuerySet으로 데이터 다루기 ⚙️

Django에서는 ORM(Object-Relational Mapping) 기능을 통해 Python 코드만으로도 데이터베이스를 자유롭게 다룰 수 있습니다.

즉, 복잡한 SQL을 몰라도 객체 지향적으로 데이터를 삽입하고 수정하며 삭제할 수 있어요.

이게 진짜... 너무 편해요.

🛠️ 기본적인 데이터 조작 예시

# 객체 생성
post = Post(title="첫 글", content="장고 너무 재밌다!")
post.save()

# 모든 데이터 조회
Post.objects.all()

# 조건에 맞는 데이터 조회
Post.objects.filter(title__contains="첫")

# 하나만 가져오기
Post.objects.get(id=1)

# 데이터 수정
post = Post.objects.get(id=1)
post.title = "수정된 제목"
post.save()

# 데이터 삭제
post.delete()

보시다시피 .save(), .filter(), .get(), .delete() 같은 메서드만 알면 데이터를 마음대로 다룰 수 있어요.

쿼리셋(QuerySet)을 이용하면 복잡한 조건도 체이닝해서 쉽게 만들 수 있고요.

🔍 자주 쓰는 QuerySet 메서드 정리

메서드 설명
all() 모든 객체를 조회
filter() 조건에 맞는 객체만 조회
get() 특정 조건에 맞는 하나의 객체 조회 (없거나 둘 이상이면 오류)
exclude() 특정 조건을 제외한 객체 조회
order_by() 정렬 기준 지정

이런 메서드들을 조합하면, 꽤 복잡한 데이터 필터링도 몇 줄 안 되는 코드로 깔끔하게 해결할 수 있어요.

그러니까요, 진짜 ORM은 신세계예요.

⚠️ 주의할 점!

  • get()은 여러 개의 결과가 있거나 없을 때 예외 발생! 항상 try/except로 감싸는 게 좋아요.
  • save()를 안 하면 DB에 반영되지 않아요. 반드시 저장해 주세요!

Django ORM은 입문자에게도 매우 직관적으로 다가오는 도구입니다.

복잡한 SQL 없이도 실무 수준의 데이터 처리가 가능하다는 건 정말 큰 장점이에요.

 

 

4. Django Admin 사이트 활용법 🛠️

Django를 처음 접하면 누구나 놀라는 기능이 있어요.

바로 Admin 사이트입니다!

개발자가 만든 모델을 관리자 페이지에서 바로 추가, 수정, 삭제할 수 있는 인터페이스가 기본 제공된다는 건... 솔직히 말해 사기급이에요.

🔐 관리자 계정 만들기

먼저 관리자 페이지를 사용하려면 슈퍼유저(superuser)를 생성해야 합니다.

터미널에서 아래 명령어를 입력해보세요.

python manage.py createsuperuser

이후 사용자명, 이메일, 비밀번호를 입력하면 관리자 계정이 생성됩니다.

서버를 실행하고 http://localhost:8000/admin 으로 접속해보세요!

🧩 모델 등록하기

관리자 페이지에서 직접 데이터를 관리하려면 모델을 admin에 등록해야 합니다.

해당 앱의 admin.py 파일을 열고 아래처럼 작성해보세요.

from django.contrib import admin
from .models import Post

admin.site.register(Post)

이제 관리자 페이지에 "Post" 메뉴가 생겨요.

여기서 데이터를 추가하거나 삭제할 수 있는 폼 UI가 자동으로 생성됩니다.

🎨 관리자 화면 커스터마이징

관리자 페이지의 기본 UI도 커스터마이징이 가능합니다.

예를 들어 제목, 생성일만 리스트에 보이게 하려면 아래처럼 코드를 수정하면 돼요.

class PostAdmin(admin.ModelAdmin):
    list_display = ('title', 'created_at')

admin.site.register(Post, PostAdmin)

이런 식으로 list_filter, search_fields, readonly_fields 등 다양한 옵션을 지정해 관리 페이지를 내가 원하는 대로 꾸밀 수 있어요.

🧾 관리자 페이지 요약

기능 설명
createsuperuser 관리자 계정 생성
register() 모델을 admin 사이트에 등록
list_display 목록에서 보여줄 필드 지정

이처럼 Django의 Admin 사이트는 개발자가 데이터 관리 페이지를 손쉽게 만들 수 있도록 도와줍니다.

특히 초기에 빠르게 MVP를 만들거나 내부 관리 도구가 필요할 때 아주 유용해요.

 

 

5. 예고: 모델 간 관계 설정 개념 🔗

지금까지는 하나의 모델만을 기준으로 데이터를 다뤘어요.

하지만 현실 세계의 데이터는 대부분 서로 관계를 맺고 있죠.

예를 들어, 사용자(User)가 여러 개의 게시글(Post)을 작성하거나, 하나의 카테고리(Category)가 여러 개의 상품(Product)을 포함하는 구조 말이에요.

🔄 다양한 관계(Relation)의 형태

  • 1:1 관계 (OneToOneField) – 예: 사용자와 프로필
  • 1:N 관계 (ForeignKey) – 예: 사용자와 게시글
  • N:N 관계 (ManyToManyField) – 예: 사용자와 그룹

이런 관계를 정의하려면 Django 모델에서 ForeignKey, OneToOneField, ManyToManyField 같은 필드를 사용합니다.

 

다음 블로그 글에서는 이렇게 모델 간 관계를 정의하고 이를 활용하는 방법을 심도 있게 다룰 예정이에요.

예를 들어 게시글(Post)에 작성자(User)를 연결하거나, 하나의 글에 여러 개의 댓글(Comment)을 연결하는 구조를 만드는 실전 예제를 보여드릴게요.

 

복잡한 데이터 구조도 Django에서는 간단하고 우아하게 정의할 수 있다는 사실, 꼭 다음 편에서 확인해보세요!

 

 

6. 마무리 정리 및 다음 글 안내 📌

이번 포스팅에서는 Django에서 데이터를 다루기 위해 꼭 알아야 할 데이터베이스 설정, 모델 정의, ORM 사용법, 그리고 Admin 사이트 활용까지 폭넓게 살펴봤습니다.

처음에는 생소할 수 있는 개념들이지만, 직접 따라 해보면서 실습해보면 어느 순간 "아, 이제 좀 알겠다!" 하는 순간이 분명 찾아올 거예요.

데이터를 설계하고 관리하는 과정은 앞으로 더 다양한 기능들을 구현할 때 아주 중요한 기반이 됩니다.

그리고 다음 글에서는 드디어 모델 간 관계 설정에 대해 본격적으로 들어갑니다.

ForeignKey를 이용해 사용자와 게시글을 연결하고, 댓글을 추가해보는 등 조금 더 현실적인 예제를 다룰 예정이에요.

 

🔥 이제 여러분은 Django 데이터 모델링의 첫 단계를 마스터했습니다.

      다음 단계에서는 훨씬 더 유기적이고 확장성 있는 데이터 구조를 함께 만들어봅시다!

반응형

+ Recent posts