Django 내장함수 개념

HY_1023·2026년 3월 13일

MENTOS

목록 보기
5/19

from django.contrib import admin — Django 내장 모듈

django.contrib.admin은 Django가 기본 제공하는 자동 관리자 인터페이스(Admin Site) 모듈입니다.


핵심 개념

Django 프로젝트를 만들면 /admin URL에서 데이터베이스를 GUI로 관리할 수 있는 페이지가 자동 생성됩니다. 이걸 가능하게 해주는 게 바로 django.contrib.admin입니다.


주요 사용법

1. 모델 단순 등록

from django.contrib import admin
from .models import Article

admin.site.register(Article)

2. ModelAdmin으로 커스터마이징

from django.contrib import admin
from .models import Article

@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
    list_display = ['id', 'title', 'author', 'created_at']  # 목록에 표시할 필드
    list_filter = ['author', 'created_at']                  # 오른쪽 필터 패널
    search_fields = ['title', 'content']                    # 검색창
    ordering = ['-created_at']                              # 정렬 기준
    readonly_fields = ['created_at']                        # 읽기 전용 필드

자주 쓰는 ModelAdmin 옵션 정리

옵션설명
list_display목록 페이지에 표시할 컬럼
list_filter사이드바 필터
search_fields검색 대상 필드
ordering기본 정렬 (-는 내림차순)
readonly_fields수정 불가 필드
fields상세 페이지에 표시할 필드 순서
inlines관련 모델을 같은 페이지에 표시
list_per_page페이지당 항목 수 (기본 100)

설정에서 활성화 확인

settings.pyINSTALLED_APPS에 반드시 포함되어 있어야 합니다:

INSTALLED_APPS = [
    'django.contrib.admin',      # ✅ 어드민
    'django.contrib.auth',       # 인증
    'django.contrib.contenttypes',
    ...
]

urls.py에도 등록:

from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('admin/', admin.site.urls),  # /admin 접속 경로
]

어드민 계정 생성

python manage.py createsuperuser

이후 /admin에 접속하면 등록된 모델을 GUI로 CRUD 할 수 있습니다.

궁금한 부분이 있으면 더 설명해 드릴게요!


"등록된 모델을 GUI로 CRUD 할 수 있습니다" 의미


먼저 CRUD란?

데이터를 다루는 4가지 기본 동작의 앞글자를 딴 약자입니다.

약자영어한국어예시
CCreate생성게시글 작성
RRead조회게시글 목록 보기
UUpdate수정게시글 내용 수정
DDelete삭제게시글 삭제

"등록된 모델" 이란?

admin.pyregister한 모델을 말합니다.

admin.site.register(Article)  # Article 모델을 등록

→ 이렇게 등록해야 /admin에서 보입니다.


전체 문장 풀이

"브라우저에서 /admin 주소로 들어가면,
등록해 놓은 DB 테이블(모델)을
코드 한 줄 없이 화면 클릭만으로
추가 / 조회 / 수정 / 삭제 할 수 있다"


실제 흐름

① 브라우저에서 localhost:8000/admin 접속
        ↓
② 슈퍼유저로 로그인
        ↓
③ 등록된 모델(예: Article) 클릭
        ↓
④ 버튼 클릭으로 CRUD 가능
   - [추가] 버튼 → Create (생성)
   - 목록 확인   → Read   (조회)
   - 항목 클릭   → Update (수정)
   - [삭제] 버튼 → Delete (삭제)

핵심 요약

개발자가 별도의 관리 페이지를 만들지 않아도, Django가 자동으로 데이터 관리 화면을 만들어 준다는 뜻입니다! 🎉


GUI (Graphical User Interface)

그래픽 사용자 인터페이스 — 즉, 마우스로 클릭하고 눈으로 보면서 사용하는 화면입니다.


CLI vs GUI 비교

CLIGUI
풀네임Command Line InterfaceGraphical User Interface
사용 방식명령어 타이핑마우스 클릭 + 시각적 화면
예시터미널, 명령 프롬프트윈도우 탐색기, 카카오톡, 웹사이트

예시로 이해하기

CLI 방식 (명령어로 데이터 조회):

SELECT * FROM article WHERE id = 1;

GUI 방식 (Django Admin):

→ 브라우저에서 /admin 접속하면 아래처럼 버튼, 표, 입력창으로 똑같은 작업을 할 수 있음

┌─────────────────────────────────┐
│  Articles                  [+추가]│
├────┬──────────┬────────────────┤
│ ID │  제목    │    작성자       │
├────┼──────────┼────────────────┤
│  1 │ 안녕하세요│   admin        │
│  2 │ 테스트   │   user1        │
└────┴──────────┴────────────────┘

한마디 요약

CLI = 코드/명령어로 조작
GUI = 눈에 보이는 화면으로 조작

Django Admin이 GUI라는 건, 코드 없이 브라우저에서 클릭만으로 DB를 관리할 수 있다는 뜻입니다! 😊



from django.contrib import admin 설명


한 마디로

"Django가 만들어놓은 관리자 페이지 기능을 가져오는 것" 이에요!


구조 분석

from django.contrib import admin
  ↑       ↑         ↑      ↑
from    django    contrib  admin
가져와  장고에서  내장앱   관리자기능

django.contrib 란?

django
  └── contrib  ← "contributed(기여하다) apps" 의 약자
        ├── admin      → 관리자 페이지
        ├── auth       → 로그인/인증
        ├── sessions   → 세션 관리
        ├── messages   → 메시지 알림
        └── staticfiles → 정적 파일

한 마디로

Django 가 기본으로
제공하는 내장 앱 모음! 📦
→ 설치 없이 바로 사용 가능!

admin 이 제공하는 것

from django.contrib import admin

# 1. 모델 등록
admin.site.register(Study)

# 2. 커스텀 Admin 클래스
class StudyAdmin(admin.ModelAdmin):
    list_display = ['title', 'category']

# 3. 데코레이터 방식
@admin.register(Study)
class StudyAdmin(admin.ModelAdmin):
    list_display = ['title']

커스텀 Admin 클래스 의미

기본 등록 vs 커스텀 등록 비교

기본 등록 - 아무 설정 없이 그냥 등록

admin.site.register(Study)

/admin에서 Study 목록이 기본 형태로만 보임

커스텀 Admin 클래스 - 어떻게 보여줄지 직접 설정

class StudyAdmin(admin.ModelAdmin):
    list_display = ['title', 'category']

admin.site.register(Study, StudyAdmin)  # ← 둘을 연결

/admin에서 Study 목록을 원하는 형태로 보여줌


list_display = ['title', 'category'] 의미

/admin목록 페이지에 어떤 컬럼을 표시할지 지정하는 옵션입니다.

설정 전

┌─────────────────────┐
│ Study object (1)    │   ← 이렇게만 보임
│ Study object (2)    │
└─────────────────────┘

설정 후

┌──────────────┬──────────────┐
│    title     │   category   │  ← 컬럼이 보임
├──────────────┼──────────────┤
│ Django 공부  │   백엔드      │
│ React 공부   │   프론트엔드  │
└──────────────┴──────────────┘

한마디 요약

admin.ModelAdmin상속받아서,
/admin 페이지를 내가 원하는 대로 커스터마이징하는 클래스입니다! ✅


데코레이터 방식 @admin.register(Study) 의미


데코레이터란?

함수/클래스 위에 @를 붙여서, 추가 동작을 자동으로 실행시키는 문법입니다.


기존 방식 vs 데코레이터 방식 비교

기존 방식 (2단계)

# ① 클래스 정의
class StudyAdmin(admin.ModelAdmin):
    list_display = ['title', 'category']

# ② 따로 등록
admin.site.register(Study, StudyAdmin)

데코레이터 방식 (1단계)

# ① 정의 + 등록을 동시에!
@admin.register(Study)
class StudyAdmin(admin.ModelAdmin):
    list_display = ['title', 'category']

@admin.register(Study) 풀이

@admin.register(Study)   # ← "Study 모델에 아래 클래스를 연결해서 등록해줘"
class StudyAdmin(admin.ModelAdmin):
    list_display = ['title', 'category']
부분의미
@데코레이터 표시
admin.register등록 동작을 수행하는 함수
(Study)어떤 모델에 연결할지 지정
StudyAdmin어드민 설정 클래스

한마디 요약

@admin.register(Study) =
admin.site.register(Study, StudyAdmin)
자동으로 실행해주는 축약 문법

코드가 짧아지고, 모델과 설정 클래스가 한눈에 보여서 가독성이 좋아집니다! ✅


admin 을 import 하면 생기는 것

http://localhost:8000/admin

┌─────────────────────────┐
│   Django 관리자 페이지   │
├─────────────────────────┤
│ 📋 Study                │
│   + 추가                │
│   📝 목록보기            │
├─────────────────────────┤
│ 👤 Users                │
│ 🔑 Groups               │
└─────────────────────────┘

이게 다 자동으로 생성! ✅


settings.py 와의 관계

# settings.py
INSTALLED_APPS = [
    'django.contrib.admin',     # ← 여기 등록되어 있어야
    'django.contrib.auth',
    'django.contrib.sessions',
    ...
]

# 그래야 admin.py 에서
from django.contrib import admin  # 사용 가능! ✅

자주 쓰는 contrib 모음

# 관리자 페이지
from django.contrib import admin

# 로그인/인증
from django.contrib.auth.models import User

# 메시지 알림
from django.contrib import messages

# 로그인 필요 데코레이터
from django.contrib.auth.decorators import login_required

비유

django.contrib
= 스마트폰 기본 앱 📱

설치 없이 처음부터
제공되는 앱들!

admin      = 기본 파일관리앱
auth       = 기본 잠금화면
sessions   = 기본 메모리
messages   = 기본 알림

정리

코드의미
from가져와
djangoDjango 패키지에서
contrib내장 앱 모음에서
admin관리자 기능을
import불러옴

💡 admin.py 파일에서
이 한 줄 없으면 아무것도 못해요!
Django 앱 만들면 자동으로 생성되는

필수 import 예요! ✅

from django.db import models — Django 내장 모듈

이건 Django가 기본으로 제공하는 내장 모듈입니다.


역할

Django에서 데이터베이스 모델을 정의할 때 사용하는 핵심 모듈이에요.

from django.db import models

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

models 안에 들어있는 주요 내장 기능들

📌 필드 (Field) — 컬럼 타입 정의

models.CharField()        # 짧은 문자열
models.TextField()        # 긴 문자열
models.IntegerField()     # 정수
models.FloatField()       # 실수
models.BooleanField()     # True/False
models.DateField()        # 날짜
models.DateTimeField()    # 날짜+시간
models.EmailField()       # 이메일
models.ImageField()       # 이미지 파일
models.FileField()        # 파일
models.ForeignKey()       # 1:N 관계
models.ManyToManyField()  # N:N 관계
models.OneToOneField()    # 1:1 관계

📌 Model 클래스 — 테이블 정의

class Study(models.Model):  # 이걸 상속받아야 DB 테이블이 됨
    ...

📌 Meta 옵션 — 모델 설정

class Study(models.Model):
    class Meta:
        ordering = ['-created_at']   # 기본 정렬
        db_table = 'my_study'        # 테이블 이름 지정
        verbose_name = '스터디'       # 관리자 페이지 표시명

자주 쓰는 Django 내장 import 모음

# DB 모델
from django.db import models

# 뷰
from django.shortcuts import render, redirect, get_object_or_404

# URL
from django.urls import path, include

# 인증
from django.contrib.auth.models import User
from django.contrib.auth.decorators import login_required

# 폼
from django.forms import ModelForm

# 설정
from django.conf import settings

핵심 요약: from django.db import models는 Django가 설치될 때 함께 제공되는 내장 모듈이고, 이걸 통해 Python 클래스를 DB 테이블로 변환할 수 있어요! 🎯

profile
개발언어를 배우는 과정 기록

0개의 댓글