본문 바로가기

레퍼런스/장고 튜토리얼

장고(Django) Admin을 소개합니다.

철학

여러분의 직원과 고객에게 admin 사이트를 생성해 주고 내용을 지우는 일은 상상력을 동원하지 않고 매우 지루한 작업입니다. 이런 이유로, 장고는 모델의 인터페이스를 생성하는걸 완전히 자동화했습니다.

장고는 newsroom 환경에서 만들어져서 "콘텐츠 제공자"와 "공개된" 사이트와는 매우 확실하게 분리돼 있습니다. 사이트 관리자는 뉴스, 이벤트, 스포츠 점수 등을 시스템에 더하고 공개된 사이트에 그 내용이 보이게 됩니다. 장고는 사이트 관리자가 컨텐츠를 제공할 수 있게 통합된 인터페이스를 만듦으로써 문제를 해결합니다.

관리자는 사이트의 단순 방문자를 위한 것이 아니라 관리자를 위한 것입니다.

 

admin 사용자를 생성합니다.

먼저 관리자 사이트에 로그인하기 위한 유저를 생성합니다. 아래의 커맨드를 입력하세요 :

 

$ python3 manage.py createsuperuser

 

 

원하는 유저명과 이메일 주소를 입력하고 패스워드까지 입력합니다.

 

 

개발 서버를 시작합니다.

장고 관리자 사이트는 기본 설정에 의해 자동으로 시작됩니다. 개발 서버를 시작하고 탐험해봅시다.

 

서버를 시작하려면 다음을 입력하세요 : 

 

$ python3 manage.py runserver

 

http://127.0.0.1:8000/admin/을 입력하세요. 다음과 같은 관리자 로그인 화면이 뜰 겁니다.

 

 

admin 사이트에 들어갑니다.

이전의 단계에서 만들어 둔 계정으로 로그인합니다. 장고 admin 인덱스 페이지를 볼 수 있습니다 :

 

 

편집할 수 있는 몇몇 내용이 보입니다: Groups와 Users가 있죠. django.contrib.auth에서 제공된 내용이며, 장고에 인증 프레임워크에 담겨 있는 내용입니다.

 

admin에서 수정 가능한 poll 앱을 만듭시다.

아까 만들었던 poll 앱이 보이지 않습니다. admin 인덱스 페이지에서 보이지 않는 것 뿐입니다.

 

한 가지만 하면 됩니다: admin에게 Question 오브젝트도 admin 인터페이스가 있다고 말해주는 겁니다. 이걸 하기 위해서는 polls/admin.py 파일을 열고 이렇게 수정하세요:

 

# polls/admin.py

from django.contrib import admin

from .models import Question

admin.site.register(Question)

 

admin의 기능을 자유롭게 탐험해봐요.

이제 우린 Question을 등록했습니다. 장고는 admin 인덱스 페이지에 Question이 등록되야 하는 것을 알게 됐습니다:

 

 

"Questions"를 클릭해봅시다. 그럼 questions 페이지의 "change list"에 도달하게 됩니다. 이 페이지는 데이터베이스에 있는 모든 질문을 보여주고 수정할 수 있게 해줍니다. 아까 만들어 뒀던 "What's up?" question이 있네요:

 

 

"What's up?" 질문을 눌러서 수정해봅시다:

 

 

아래를 참조하세요:

 

  • Question 모델에서 자동으로 생성된 폼입니다.
  • 다른 모델 필드 타입(DateTimeField, CharField)은 적절한 HTML 입력 위젯과 일치합니다. 각 필드 타입은 장고 admin에서 어떻게 보여질지 스스로 알고 있습니다.
  • DateTimeField는 자바 스크립트 위젯을 가집니다. Dates는 "Today" 버튼이 있고 calendar 팝업을 가지며 times는 "Now" 버튼과 쉽게 시간을 입력할 수 있느 팝업을 제공해줍니다.

페이지의 아래에는 몇몇 옵션을 제공합니다:

 

  • Save - 변경을 저장하고 이 오브젝트의 change-list 페이지를 보여줍니다(이 경우에는 Question).
  • Save and continue editing - 변경을 저장하고 이 오브젝트의 admin 페이지를 다시 보여줍니다.
  • Save and add another - 변경을 저장하고 새로운 비어있는 폼을 보여줍니다.
  • Delete - 삭제 확인 페이지를 보여줍니다.

 

"Date published" 값이 여러분이 만들었던 시간과 다르다면, TIME_ZONE 설정을 제대로 하지 않은 것입니다. 변경한 이후 페이지를 새로고침하면 맞는 값이 나올겁니다.

 

 

chem/setting.pyTIME_ZONE을 'Asia/Seoul'로 설정하고 나니 제 시간에 맞게 설정됐습니다.

 

여러 timezone을 확인하고 싶으면 아래의 링크를 확인하세요:

 

https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

 

List of tz database time zones - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search World map showing time zones from the tz database version 2017a This is a list of time zones from release 2017c of the tz database.[1] UTC offsets (columns 6 and 7) are positive east o

en.wikipedia.org

 

"Date published"를 "Today"와 "Now"를 누르고 난 뒤 "Save and continue editing"을 클릭하고 "History"를 클릭하면 장고 admin을 통해 이 오브젝트가 변화된 모든 기록을 확인할 수 있습니다. timestamp와 오브젝트를 변경한 username도 확인할 수 있습니다.