장고(Django) 개발: 관리자(Admin) 화면 관리

웨드_ |

관리자(Admin) 화면은 장고(Django) 프레임워크에서 기본 기능으로 제공된다. 관리자 화면에서 객체를 생성, 수정, 삭제하면 바로 DB에 적용이되고, 모든 변경 사항은 자동으로 기록된다.


작년에 장고(Django) 프레임워크로 프로젝트를 진행하면서 공부했던 개발 지식을 블로그에 다시 정리하려고 합니다. 개인 위키에 정리했던 것을 옮기는 수준이라, 친절한 설명은 기대하기 어렵고, 프로그래밍 언어와 파이썬 지식이 어느정도 있어야 이해할 수 있을 것입니다.


아래 내용들은 Django 1.6~1.7 버전을 기준으로하고, "쉽고 빠른 웹개발 Django"란 책에서 1/3, 공식 위키에서 1/3, 그리고 나머지는 구글링을 바탕으로 정리한 지식입니다. 말투가 존대와 반말이 섞여있어도 이해바랍니다 :)




1 관리자 화면 만들기

2 관리자 화면 목록

3 관리자 화면 템플릿





1 관리자 화면 만들기

1. settings.py에서 INSTALLED_APPS에 관리자 화면 기능 추가
(1.6~1.7 버전에서는 프로젝트 생성시기본적으로 추가되어 있다.)

INSTALLED_APPS = (
    #중략
    'django.contrib.admin',
    #중략
)

2. DB 싱크 후, 3. urls.py에 URL 추가

from django.contrib import admin
 
admin.autodiscover()
 
urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)),     # 관리자 페이지
    #중략
)

4. admin.py에서 관리할 데이터 모델과 방법 지정

from django.contrib import admin
from bookmarks.models import Link, Bookmark, Tag, SharedBookmark
 
class AdminBookmark (admin.ModelAdmin):
    list_display = ("title""link""user", )
    list_filter = ("user", )
    ordering = ("title", )
    search_fields = ("title", )
     
admin.site.register(Bookmark, AdminBookmark, )
admin.site.register(Link, )
admin.site.register(Tag, )
admin.site.register(SharedBookmark, )

5. http://127.0.0.1:8000/admin/ 관리자 화면 확인


장고 관리자 페이지



2 관리자 화면 목록

admin.py 에서 ModelAdmin을 상속받은 클래스에서 목록을 어떻게 표시할지 지정할 수 있음

  • list_display : 객체 목록 페이지의 필드 이름 지정
  • list_filter : 객체 목록을 가져올 때 사용할 수 있는 필터 옵션을 옆에 표시
  • ordering : 객체 목록을 가져오는 순서
  • search_fields : 객체를 검색할 때 사용할 필드 이름 지정
class AdminBookmark (admin.ModelAdmin):
    list_display = ("title""link""user", )
    list_filter = ("user", )
    ordering = ("title", )
    search_fields = ("title", )



3 관리자 화면 템플릿

관리자 화면 템플릿 위치

장고에서 기본적으로 제공되는 관리자 템플릿

  • 윈도우 : c:\PythonXX\Lib\site-packages\django\contrib\admin\templates\
  • 리눅스 : /user/lib/pythonXX/site-packages/django/contrib/admin/templates/
  • 맥 : /Library/Python/X.X/site-packages/django/contrib/admin/templates/

위 템플릿 파일을 복사해서, 프로젝트 템플릿 폴더아래 admin 폴더를 만들어 붙여넣고, 수정해서 사용하면 된다.

관리자 화면 주요 템플릿 파일

  • admin/base_site.html : 모든 화면이 상속받아 사용하는 페이지
  • admin/change_list.html : 객체의 목록 페이지
  • admin/change_form.html : 객체 추가 및 수정 페이지
  • admin/delete_confirmation.html : 객체 삭제 시 확인하는 페이지