장고 시작하기 18. Django Admin 페이지 구성하기

Django Admin 페이지는 Django 웹 프레임워크의 가장 강력한 기능 중 하나입니다. 데이터베이스 콘텐츠 관리를 위한 사용자 친화적인 인터페이스를 제공하므로 개발자와 관리자에게 필수적인 도구입니다.

Django Admin 페이지가 제공하는 것

  • 각 모델들의 record를 조회, 생성, 수정, 삭제할 수 있는 모든 기능을 제공합니다.
  • 이외에도 각종 권한 부여를 해서 제한하거나, 페이지 자체를 커스텀 하는 것도 가능합니다.

장고 관리자 페이지를 만들기 전에…

관리자 인터페이스에 엑세스를 할 수 있는 슈퍼 유저를 우선 생성해 줍니다.

python Manage.py createsuperuser

urls.py

우리가 URL에 추가하기 전에 admin 페이지가 자동으로 입력되어 있는 것을 알 수 있습니다.

urlpatterns = [
    path("admin/", admin.site.urls),
    path("", include("articles.urls")),
    path("users/", include("users.urls")),
    path("accounts/", include("accounts.urls")),

]

때문에 http://127.0.0.1:8000/admin/ 주소로 들어가면 따로 admin 페이지를 만들지 않았어도 자동으로 만들어진 화면이 아래와 같이 뜹니다.

접속하면 아래와 같이 계정 정보를 출력하는 화면이 보여집니다.

각 모델에 대한 관리자 페이지 구축하기

각 app마다 admin.py가 이미 존재하는 것을 확인 할 수 있습니다.

여기에 아래 코드를 작성하면 각 모델에 대한 관리자 페이지를 추가해줄 수 있습니다.

# your_app/admin.py
from django.contrib import admin
from .models import Articles

admin.site.register(Articles)

이제 다시 admin으로 접속해보면 articles 모델에 대한 관리자 페이지가 생성 된 것을 확인 할 수 있습니다.

해당 모델에 대한 기본적인 CRUD가 가능합니다.

장고 관리자 페이지 커스텀 하기

@admin.register() 데코레이터를 사용하여 간단하게 관리자 페이지를 커스텀 할 수 있습니다

admin.py에서 @admin.register() 데코레이터를 사용하여 ModelAdmin 클래스와 함께 모델을 등록할 수 있습니다.

admin.ModelAdmin 클래스는 관리 인터페이스에서 모델이 표시되고 관리되는 방식에 대한 사용자 정의를 정의합니다.

# your_app/admin.py
@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
    list_display = ("title", "created_at")  # 게시판의 표시한 필드
    search_fields = ("title", "content")  # 검색할 필드
    list_filter = ("created_at",)  # 필터 기능 추가
    date_hierarchy = "created_at"  # 날짜 단위로 분류
    ordering = ("-created_at",)  # 게시글 순서 지정

주요 사용자 정의 옵션

list_display: 관리자 테이블에서 표시할 필드를 지정합니다.

search_fields: 지정된 필드로 검색할 수 있는 검색 상자를 추가합니다.

list_filter: 지정된 필드를 기반으로 데이터를 쉽게 필터링할 수 있도록 사이드바에 필터를 추가합니다.

ordering: 목록 보기의 기본 순서를 설정합니다.

아래 그림을 보면 아까와 달리 모델 관리자에 다양한 기능들이 추가 된 것을 확인 할 수 있습니다.

참고하면 좋은 글

Django Tutorial Part 4: Django admin site – Web 개발 학습하기 | MDN (mozilla.org)

The Django admin site | Django documentation | Django (djangoproject.com)

Leave a Comment

목차