Philosophy(철학)
직원이나 클라이언트 관리 사이트를 만드는 것은 지루하고 귀찮은 일인데 장고는 완전히 모델에 대한 관리 인터페이스 생성을 자동화 한다.
관리자 권한은 방문자가 사용할 수 없으면 사이트 관리자만이 사용 하능하다.
내용
- 개발 서버 시작
- 관리자 사이트 들어가기
- 관리자가 되어 설문 앱을 수정하기
- 무료 관리 기능 확인
- 사용자 정의 관리자 양식(The Admin Form)
- 관련 Objects 추가하기
- 관리자 변경 목록을 사용자 정의
- 관리자 룩앤필을 사용자 정의
- 내 프로젝트 탬플릿 커스터마이징하기
- 내 앱 템플릿 커스터마이징하기
- 관리자 인덱스 페이지 커스터마이징하기
개발 서버 시작
장고 관리자 사이트는 기본적으로 활성화 되어 있다.
튜토리얼1에서의
python manage.py run server을 사용해보자.
를 들어가면 관리자 로그인 페이지를 볼 수 있다.
관리자 사이트 들어가기
여기서 하게 될 일은
1. Poll Objects 가 관리자 인터페이스를 가지고 있는걸 말해줘야 한다.
2. 1.을 해준 다음에, polls/admin.py 파일을 열고 수정 해줘야 한다.
관리자 되어 설문 앱 수정하기
우리가 만든 poll 어플리케이션은 어디있을까? 이것은 관리자 인덱스 페이지에서 보여지지 않는다.
polls 의 admin.py 파일을 아래와 같이 수정한다.
from django.contrib import admin from polls.models import Poll admin.site.register(Poll)
무료 관리 기능 확인
위의 문장을 통해 Poll objects 이 등록되었다.
이제 장고는 어드민 인덱스 페이지에서 보여진다.
어드민 인덱스에서 보이는 Polls를 누르면 변경 목록이 보인다.
이 페이지는 polls의 모든 것을 보여준다. 또한 변경하려면 하나를 선택 하면 된다.
Tutorial 01 에서 만든 “Whats up”이 보일 것이다.
클릭하여 나타난 Change poll

이제 생각 해 봐야 할 것은
- 양식은 Poll 모델로부터 자동 생성 된다는 것이다.
- 또한 다른 모델의 필드타입은(ex DataTimeField, CharField) 적절한 HTML 입력 위젯에 대응한다.
- 각 DataTimeFiled 는 무료 JS 바로가기를 가져온다. Dates는 “Today” 바로가기와 달력 팝업, times는 “Now”바로가기와 일반적으로 시간을 나열하는 편리한 팝업창을,
페이지 맨 아래 부분에서의 옵션 네가지
- 저장
- 저장하고 편집 계속
- 저장하고 다른 추가
- 삭제
관리자 양식 커스터마이징 하기
Poll 모델을 admin.site.register(Poll)로 등록 함으로써, 장고는 기본 양식 표현을 구축 할 수 있다.
원한다면 관리 형태의 모양과 동작 방식을 커스터마이징 하여 사용 할 수 있다.
편집 양식을 재주문하여 동작시키는 방법을 살펴보자.
admin.site.register(Poll)의 줄을 교체해보자
admin.py를
from django.contrib import admin from polls.models import Poll admin.site.register(Poll)
from django.contrib import admin from polls.models import Poll class PollAdmin(admin.ModelAdmin): fields = ['pub_date', 'question'] admin.site.register(Poll, PollAdmin)이렇게 수정하면 Question-Date 순이었던것이
Date-Question 순서가 된다.
class PollAdmin(admin.ModelAdmin): fieldsets = [ (None, {'fields': ['question']}), ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}), ]보여주고 싶지 않은 부분이 있다면 위와 같이 ‘collapse’설정을 해주면 보이지 않는다.
관련된 Objects 추가하기
설문 관리 페이지가 있지만, 설문은 여러개의 선택지가 존재한다. 그리고 관리 페이지는 선택사항으 보여주지 못한다.
이를 해결하기 위한 두가지 방법이 있다.
from polls.models import Choice 최종적으로
admin.site.register(Choice)
를 추가해주는 방법이 하나의 방법이다. 근데 이건 좀 비효율적인 방법이다.
만약 선택의 종류들을 추가할 수 있고 바로 Poll Object를 만들 수 있다면? 그방법은 바로
from django.contrib import admin from polls.models import Choice, Poll class ChoiceInline(admin.StackedInline): model = Choice extra = 3 class PollAdmin(admin.ModelAdmin): fieldsets = [ (None, {'fields': ['question']}), ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}), ] inlines = [ChoiceInline] admin.site.register(Poll, PollAdmin)
class PollAdmin(admin.ModelAdmin): # ... list_display = ('question', 'pub_date', 'was_published_recently')를 추가해주면 Poll 리스트에 시간과 최근수정일이 표시된다.
search_fields = ['question’]
을 PullAdmin에 추가해주면 퀘스쳔을 검색해주는 필드가 생긴다
내 프로젝트 Templates 커스터마이징하기
Templates_DIRS = [os.path.join(BASE_DIR,'templates’)]
를 setting.py에 추가한다.
'Program Language > dJango' 카테고리의 다른 글
nginx django 세팅하기 (0) | 2014.08.12 |
---|---|
django 3일간 튜토리얼 1~4까지 하고 의식의 흐름대로 정리 (0) | 2014.07.06 |
django 1.6 Tutorial04 한글 공부 (0) | 2014.07.06 |
django 1.6 Tutorial03 한글 공부 (0) | 2014.07.06 |
django 1.6 Tutorial01 한글 공부 (0) | 2014.07.06 |