본문 바로가기
Django

[Django] Admin(어드민페이지) 커스터마이징

by sum_mit45 2024. 7. 17.
728x90
반응형

1. Django Admin

  • 장고가 제공하는 기본 앱 (settings.py 내 INSTALLED_APPS 에서 확인 가능)
  • staff/superuser 계정에 한해 접근 가능 : admin에서 users 목록을 통해서 permissions 수정
  • 모델 클래스만 등록하면, 조회/추가/수정/삭제 웹 인터페이스를 admin에서 제공

https://localhost/admin/ 에서 확인 가능하다

2. Model 클래스 등록

  • 특정 모델 클래스를 admin에 등록하면, 해당 모델을 GUI 환경에서 관리 가능
  • admin.py 파일 내에 원하는 모델을 import, register, unregister 진행
  • admin.site.unregister 기능은 기본 유저 모델의 등록을 해제하는 등의 용도로 사용

a. Model Admin 등록법 1 - 기본 등록

# myapp/admin.py
from django.contrib import admin
from blog.models import Post

admin.site.register(Post) # 기본 ModelAdmin으로 등록

 

- Post 라는 모델을 만들었다고 가정해보자. 

b. Model Admin 등록법 2 - admin.ModelAdmin 상속 커스터마이징

# myapp/admin.py
from django.contrib import admin
from blog.models import Post

class PostAdmin(admin.ModelAdmin):
    list_display = ['id', 'title', 'created_at', 'updated_at' ]

admin.site.register(Post, PostAdmin)

 

[Model Admin 옵션]

 

  • list_display : Admin 목록에 보여질 필드 목록
  • list_display_links : 목록 내에서 링크로 지정할 필드 목록 (이를 지정하지 않으면, 첫번째 필드에만 링크가 적용)
  • list_editable : 목록 상에서 수정할 필드 목록
  • list_per_page : 페이지 별로 보여질 최대 갯수 (디폴트 : 100)
  • list_filter : 필터 옵션을 제공할 필드 목록
  • actions : 목록에서 수행할 action 목록

c. Model Admin 등록법 3 - decorator 형태로 등록

# blog/admin.py
from django.contrib import admin
from .models import Post

@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
    list_display = ['id', 'title', 'author', 'created_at', 'updated_at' ]
    list_display_links = ['id', 'title']
    list_editable = ['author']
    list_per_page = 3
    list_filter = ['author', 'created_at']

 

@admin.register(Post) 의 형태로 구현한다. 위의 방법보다 이 방법을 더 선호한다고 한다. 

 

 

728x90
반응형