백엔드/Django

[Django] Document 따라 읽기(3) - admin 페이지

안용감한호랑이 2023. 11. 6. 23:37

[백엔드/Django] - [Django] Documnet 따라 읽기(2) - View, Model, CRUD API(1)

 

[Django] Documnet 따라 읽기(2) - View, Model, CRUD API(1)

[백엔드/Django] - Django Document 따라 읽기(1) - Tutorial(설치, 데이터베이스 연결) [Django] Document 따라 읽기(1) - Tutorial(설치, 데이터베이스 연결) 본 글은 Django의 공식 Document에 있는 Tutorial을 따라 하는

dog-foot-writen.tistory.com


Django의 가장 큰 장점 중 하나는 admin 페이지를 기본적으로 제공해 준다는 점입니다.

다만 이번 글에서는 admin 페이지의 커스텀이 아닌 단순한 생성에 대해서 소개하고 있습니다.

 

 

 

Django의 철학

직원이나 클라이언트가 콘텐츠를 추가, 변경, 삭제할 수 있도록 관리 사이트를 생성하는 것은 창의력이 많이 필요하지 않은 지루한 작업이다. 이러한 이유로 Django는 모델에 대한 관리 인터페이스 생성을 완전히 자동화한다.

Django는 "Content publisher"와 "public" 사이트를 명확하게 구분하는 뉴스룸 환경에서 작성되었습니다. Content publisher는 시스템을 사용하여 뉴스 기사, 이벤트, 스포츠 경기 결과 등을 추가하고 해당 콘텐츠는 public 사이트에 표시됩니다. Django는 site 관리자가 content를 편집할 수 있는 통합 인터페이스를 만드는 문제를 해결합니다.

admin 페이지는 site의 방문자가 사용하도록 고안된 것이 아닌 site의 관리자용입니다.

 

 

 

관리자 생성하기

먼저 admin 사이트에 로그인할 수 있는 사용자를 생성해야 합니다.

python manage.py createsuperuser



# 이후 원하는 사용자명, 이메일주소, 비밀번호를 입력해줍니다.
# EX>
Username : admin
Email address : admin@example.com
Password : *******
Password (again) : *******


Superuser created successfully.

 

 

위 코드처럼 createsuperuser를 통해 "Superuser created successfully"라는 메시지가 나왔다면 Django 서버를 실행시켜 접속하겠습니다.

python manage.py runserver

Django의 admin 페이지 접속 로그인 화면

 

 

설정해 주신 계정으로 접속을 한다면 아래와 같은 관리 사이트에 들어가게 됩니다. 해당 페이지는 Django의 관리자 색인 페이지로 그룹과 사용자 등 몇 가지 편집 가능한 콘텐츠 유형이 표시됩니다.

Django의 admin 페이지

 

이전 글에서 저희는 poll이라는 app을 생성하였지만 해당 app이 나오지 않는 것을 알 수 있습니다. 저희는 admin 페이지에 Question object를 전달해 주어야 합니다.

# polls/admin.py
from django.contrib import admin

from .models import Question

admin.site.resister(Question)

 

위 코드처럼 admin.py에 Question을 추가해 주면 아래와 같이 admin 페이지에 polls의 Question이 등록된 것을 알 수 있습니다.

 

 

Questions를 눌러보면 이전글에서 CRUD api를 수행하며 등록한 "What's up?"이라는 질문이 등록되어 있는 것을 알 수 있습니다. 이 페이지에는 데이터베이스의 모든 질문이 표시됩니다.

주의사항

  • 양식은 모델(현재는 polls의 Question)에서 자동으로 생성됩니다.
  • 다양한 모델의 필드 유형(DateTimeField, CharField)들은 HTML의 입력 위젯에 해당합니다.
  • 각각의 DateTimeField는 자바스크립트의 단축키가 들어 있어 "Today"와 같은 shortcut이 존재합니다.

 

페이지 하단의 옵션

  • SAVE : 변경 사항을 저장하고 이 개체 유형에 대한 변경 목록 페이지로 돌아갑니다.
  • Save and continue editing : 변경 사항을 저장하고 이 개체에 대한 관리 페이지를 다시 로드합니다.
  • Save and add another : 변경 사항을 저장하고 이 개체 유형에 대한 새로운 빈 양식을 로드합니다.
  • Delete : 삭제 confirm 페이지를 표시합니다.