본문 바로가기

Pyhon/Django

[Pyhon/Django] 장고 기초#006. 장고 관리자(Administration)

관리(Administration) 인터페이스의 자동화

장고 프로젝트는 자동화된 관리 인터페이스 기능(Automatic admin interface)을 제공합니다. 빠르고, 모델 중심적인(Model-centric) 인터페이스를 제공하는데, 이는 모델을 통해 메타데이터를 읽어오기 때문에 가능합니다. 다만 이 기능은 신뢰 할 수있는 사용자로부터 조직 내부 관리를 위한 도구로써 사용되야 하며, 프론트 앤드 구축을 위한 것이 아닙니다.

모델에 대한 관리자 인터페이스를 제공하기 위해서 admin.py를 다음과 같이 수정합니다.

from django.contrib import admin
from .models import Post

class PostAdmin(admin.ModelAdmin):
    pass
    
admin.site.register(Post, PostAdmin)

클래스(PostAdmin)는 admin.ModelAdmin을 상속 받으며, 접두사로 Model 이름과 접미사 Admin을 붙여서 명명합니다. 우리는 Post 모델에 대한 인터페이스를 정의하기 때문에 PostAdmin이라고 이름 지었습니다. 애플리케이션이 실행되면, django.contrib.admin의 autodiscover()에 의해서 admin.py에 등록된 모든 ModelAdmin를 읽어와 인터페이스를 제공합니다. 이렇게 제공 되는 인터페이스는 장고 관리자 사이트(http://127.0.0.1:8000/admin/)에서 확인 할 수 있습니다.

위 코드는 부모 클래스 ModelAdmin의 구현을 그대로 사용하므로, 다음과 같이 간소화 될 수 있습니다.

from django.contrib import admin
from .models import Post

admin.site.register(Post)

또한 동일한 결과로써 Java의 어노테이션(Annotation)과 같이 클래스 중심으로 처리 할 수도 있습니다. ModelAdmin에 대한 신규 인터페이스 클래스를 정의하고, 이를 admin.site.register하는 것과 동일합니다.

from django.contrib import admin
from .models import Post

@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
    pass

관리자 계정 관리

장고 관리자 사이트(http://127.0.0.1:8000/admin/)에 접속 시 로그인 페이지로 먼저 리디렉션 됩니다. 최초 접속 시에는 관리자 계정을 만들어야 하며, 이후에는 관리자 계정을 통해 다른 계정을 추가 생성 및 관리 할 수 있습니다. 터미널에서 다음 절차를 따라 관리자 계정을 생성합니다.

$ python3 manage.py createsuperuser
Username: admin
Email address:
Password: admin
Password (again): admin
Superuser created successfully.

테스트 프로젝트이므로 계정 이름과 비밀번호는 admin을 사용합니다. 다시 관리자 사이트에 접속하여 방금 생성한 계정 정보로 로그인합니다. 위에서 admin.py에 Post 모델에 대한 관리 인터페이스 클래스를 잘 등록했다면, 아래 사진처럼 BLOG 애플리케이션의 Posts 모델에 대한 인터페이스를 확인 할 수 있습니다.

Posts 항목을 클릭하여 내부로 한 번 더 들어가면, 모델에 대한 데이터 리스트(Read), 작성(ADD POST/Create), 데이터를 클릭하여 내용 변경(Update), 데이터를 다중 선택하여 삭제(Delete) 작업을 진행 할 수 있습니다. 이러한 CRUD에 대한 기본 제공이 장고의 관리 인터페이스 자동화입니다.  우리는 admin.site.register(Post) 코드 한 줄을 추가한 것 뿐이지만 데이터베이스 상의 모델 데이터를 직접 제어할 수 있는 인터페이스를 제공 받습니다.