ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Django] Admin site 커스터마이즈 하기
    Web 2019. 12. 25. 17:27

     

     

    Django의 장점 중에 하나인 관리자(admin) 페이지를 더 잘 사용하기 위해서

    admin.py 를 커스터마이즈 해보자!

    다양한 기능이 있지만 우선 내가 사용해본 것 위주로 작성했다.

    Django의 기본 사용과 model 작성 관련 부분은 생략했다.

     

     

    • Model 등록하기 전

    Admin site

     

    Model을 admin site에 등록하는 방법

    첫번째 방법

    • 기본 ModelAdmin을 이용해서 admin페이지에 등록한다.
    # admin.py
    from django.contrib import admin
    from .models import Paper
    
    admin.site.register(Paper)

     

    두번째 방법

    • 데코데이터를 이용하여 admin페이지에 등록한다.
    # admin.py
    from django.contrib import admin
    from .models import Paper
    
    @admin.register(Paper)
    class PaperAdmin(admin.ModelAdmin):
        ...

     

    Admin site

     

    Admin site

     

    기능 추가하기

    list_display

    • 기본적으로는 하나의 오브젝트에 하나의 값만 나타낸다.
    • 하나의 오브젝트에 여러 값을 표시하기 위해서 list_display를 사용한다.
    # admin.py
    from django.contrib import admin
    from .models import Paper
    
    @admin.register(Paper)
    class PaperAdmin(admin.ModelAdmin):
        list_display = ['id', 'title', 'author']

     

    • 한 줄에 id, title 과 author이 나타나도록 한다.

    list_display

     

    list_display_links

    • admin site에서 세부 항목으로 들어가는 link를 임의로 설정 할 수 있다.
    • link를 설정하지 않을 경우 맨 앞에 자동으로 link가 달린다.
    # admin.py
    from django.contrib import admin
    from .models import Paper
    
    @admin.register(Paper)
    class PaperAdmin(admin.ModelAdmin):
        list_display = ['id', 'title', 'author']
        list_display_links = ['title']

     

    • title에 link를 설정해 주었다.

    list_display_links

     

    list_filter

    • admin site 오른쪽에 있는 UI를 통해서 원하는 값만 filtering 할 수 있다.
    # admin.py
    from django.contrib import admin
    from .models import Paper
    
    @admin.register(Paper)
    class PaperAdmin(admin.ModelAdmin):
        list_display = ['id', 'title', 'author']
        list_display_links = ['title']
        list_filter = ['author']

     

    • author를 기준으로 filtering 했다.

    list_filter

     

    search_fields

    • admin site에서 검색UI를 이용하여 원하는 데이터를 검색 할 수 있다.
    # admin.py
    from django.contrib import admin
    from .models import Paper
    
    @admin.register(Paper)
    class PaperAdmin(admin.ModelAdmin):
        list_display = ['id', 'title', 'author']
        list_display_links = ['title']
        list_filter = ['author']
        search_fields = ['title']

     

    • title를 기준으로 검색을 하여 원하는 데이터를 찾는다.

    search_fields

     

     

    이외에도 다른 기능들이 있지만 아직 써보지 않아서 모르겠다.

    우선은 Django의 admin site에 다양한 기능이 있다는 것을 알고

    필요하면 검색을 해보는게 중요할꺼 같다.

     

     

    테마 적용하기

    Suit

    • Admin site에 테마를 적용하면 간단하게 꾸밀 수 있다.
    • Install
    pip install django-suit

     

    django-suit에 대해서는 나중에 따로 글을 작성하겠다.

    하지만, 쉬우니 그냥 구글링을 추천하겠다.

     

     

     

     


     

    Reference

    Django admin cookbook

    admin 관련 Blog

    admin 관련 PPT

     

     

    'Web' 카테고리의 다른 글

    [Django] admin 커스텀하기  (0) 2020.03.19
    Django Restful API 문서를 작성하기(feat. drf-yasg)  (0) 2019.10.22
    AWS with PuTTY  (0) 2019.09.05
    PWA - Push Notification  (0) 2019.08.02
    Service Worker  (0) 2019.08.01

    댓글

© 2019 All rights reserved.