[python] Django의 관리자 페이지 커스터마이징하기

Django는 기본 제공되는 관리자 페이지를 통해 데이터 모델을 쉽게 관리할 수 있는 강력한 기능을 제공합니다. 그러나 때로는 기본 제공되는 기능으로는 요구사항을 충족시키기 어려울 수 있습니다. 이럴 때, Django의 관리자 페이지를 커스터마이징하여 필요한 기능을 추가하거나 변경할 수 있습니다.

기본 제공되는 관리자 페이지

Django 프로젝트를 생성하면 기본적으로 관리자 페이지를 포함하고 있습니다. 데이터 모델을 등록하면 해당 데이터를 관리하기 위한 기본적인 기능들을 제공합니다.

# admin.py
from django.contrib import admin
from .models import YourModel

admin.site.register(YourModel)

위와 같이 데이터 모델을 admin.py 파일에 등록하면, 관리자 페이지에서 해당 데이터를 관리할 수 있습니다.

커스터마이징 옵션

Django의 관리자 페이지 커스터마이징을 위해 다음과 같은 옵션들을 선택할 수 있습니다.

모델 관리자 클래스 커스터마이징

기본 제공되는 기능 외에 추가적인 기능이 필요한 경우, 해당 모델에 대한 관리자 클래스를 커스터마이징할 수 있습니다.

# admin.py
from django.contrib import admin
from .models import YourModel

class YourModelAdmin(admin.ModelAdmin):
    list_display = ('field1', 'field2', 'field3')

admin.site.register(YourModel, YourModelAdmin)

list_display 같은 속성을 사용하여 관리자 페이지에서 보여지는 필드를 지정하거나, list_filter, search_fields 등의 속성을 사용하여 필터링이나 검색 기능을 추가할 수 있습니다.

관리자 페이지 템플릿 오버라이딩

기본 제공되는 템플릿을 커스터마이징하여 디자인이나 레이아웃을 변경할 수 있습니다. templates/admin 경로에 새로운 템플릿을 생성하고 기존의 템플릿을 오버라이딩하여 필요한 변경을 적용할 수 있습니다.

액션 추가

특정 항목에 대해 한 번에 여러 동작을 수행하려는 경우, 액션을 추가하여 관리자 페이지에서 해당 동작을 수행할 수 있습니다.

# admin.py
from django.contrib import admin
from .models import YourModel

def make_published(modeladmin, request, queryset):
    queryset.update(status='published')

make_published.short_description = "Mark selected items as published"

class YourModelAdmin(admin.ModelAdmin):
    actions = [make_published]

admin.site.register(YourModel, YourModelAdmin)

마치며

Django의 관리자 페이지는 강력한 기능을 제공하지만, 프로젝트의 요구사항에 맞게 커스터마이징하여 더 나은 사용자 경험을 제공할 수 있습니다.