Korean translation of http://www.djangoproject.com/documentation/tutorial2 || <-- || [../Tutorial1] || [../Tutorial3] || --> || = 당신의 첫번째 장고 프로그램 만들기, part 2 = <> 이 문서는 Django 0.9.1을 다룬다. 구버전 : 0.90 docs By Adrian Holovaty , Translated by [parkpro77] 튜토리얼 1을 끝마치면 이 튜토리얼을 시작한다. 우리는 웹 투표 프로그램을 계속 만들 것이고, 장고가 자동적으로 생성하는 관리자 싸이트에 초점을 맞출 것이다. {{| '''원리''' 당신의 부원이나 고객을 위해 내용을 추가하고, 바꾸고, 삭제하기 위한 관리자 싸이트를 생성하는 것은 많은 창조성을 필요로 하지 않는 지루한 작업이다. 장고는 모델을 위한 관리자 인터페이스의 창조가 완전하게 자동이다. 장고는 출판업자와 공적인 싸이트 사이가 완전하게 분리되어진 편집국에서 쓰여졌다. 싸이트 관리자는 뉴스 이야기, 이벤트, 스포츠 점수 등을 추가하기 위해 이 시스템을 사용하고, 내용은 공적인 싸이트에 보여졌다. 장고는 싸이트 관리자를 위해 내용을 추가하기 위한 통합된 인터페이스를 만드는 문제를 푼다. 관리자는 싸이트 방문자에 의해 사용되어지는 필연적인 경향은 없다. 그것은 싸이트 관리자를 위한 것이다. |}} == 관리자 싸이트 작동 시키기 == 장고 관리자 싸이트는 초기설정에 의해 작동되어지지 않는다. -- 그것은 어떤 것에 가입을 결정한다. 설치를 위해서 관리자 싸이트를 작동시키기 위해, 이 세가지를 하라: * 당신의 INSTALLED_APPS 를 구성하기 위해 django.contrib.admin 를 추가하라. * python manage.py install admin 명령을 실행하라. 이것은 관리자가 필요한 여분의 데이타베이스를 만들 것이다. * myproject/urls.py 파일에 편집창을 열고, Uncomment this for admin: 아래 라인을 주석처리 하지 않는다. 이 파일은 URLconf 이다; 우리는 다음 튜토리얼에서 URLconf 를 자세히 볼 것이다. 우선은, 당신이 알기 위해 필요한 모든 것은 프로그램들에서 URL roots를 배치하는 것이다. == 사용자 계정 만들기 == 당신의 관리자 싸이트를 위한 슈퍼유저 계정을 만들기 위해 다음 명령을 실행하라. {{{ python manage.py createsuperuser }}} 이 스크립트는 유저네임, 이메일 주소, 패스워드 (두번)를 물어볼 것이다. == 개발 서버 시작하기 == 개발 서버를 시작하고, 관리자 싸이트로 들어가자. 튜토리얼 1에서 했던 것처럼 개발 서버를 시작하라. {{{ python manage.py runserver }}} 이제, 웹 브라우저를 열고, 당신의 로컬 도메인의 "/admin/"으로 가라 -- 예를 들면, http://127.0.0.1:8000/admin/. 그러면 관리자 로그인 화면을 볼 것이다. {{attachment:admin01.png}} == 관리자 싸이트에 들어가기 == 이제, 로그인을 시도하자. 당신은 장고 관리자 목록 페이지를 볼 것이다. {{attachment:admin02.png}} 초기설정에 의해, 당신은 편집할 수 있는 내용의 두 형식인 groups와 users를 볼 것이다. 이것들은 장고 ships의 핵심적인 특징이다. == 관리자가 수정할 수 있는 투표 프로그램 만들기 == 우리의 투표 프로그램은 어디에 있을까? 그것은 관리자 목록 페이지에는 보여지지 않는다. 한가지 방법이 있다: Poll 객체들이 관리자 인터페이스를 가진다는 Poll 모델에서 우리는 . myproject/polls/models/polls 파일의 편집창을 열고, 관리자 속성을 가진 META 클래스를 추가하기 위해 다음처럼 변환하라. {{{#!python class Poll(meta.Model): # ... class META: admin = meta.Admin() }}} 클래스 META는 이 모델에 대한 항목이 없는 모든 META 데이타를 포함한다. 이제 당신이 편집한 것을 보기 위해 장고 관리자 페이지로 가라. 개발서버를 재시작하지 않는다는 것에 주목하라 -- 그것은 자동 연결 코드이다. == 공짜 관리자 기능 알아보기 == 이제 Poll은 관리자 속성을 가지고, 그것은 관리자 목록 페이지를 보여줄 것이다. {{attachment:admin03.png}} "Polls"을 클릭하라. 이제 당신은 "change list" 페이지에 있다. 이 페이지는 데이타베이스 모든 polls을 보여주고, 그것을 바꾸기 위해 하나를 선택하자. 튜토리얼 1에서 만들었던 "What's up?" poll 이 있다. {{attachment:admin04.png}} "What's up?" poll 을 바꾸기 위해 그것을 클릭하라. {{attachment:admin05.png}} 여기에서 주목할만한 것들: * 그 양식은 Poll 모델로부터 자동적으로 생성되어졌다. * 다른 모델 항목 유형들 (meta.DateTimeField, meta.CharField)은 고유의 HTML 입력과 일치한다. 각 항목의 유형은 장고 관리 안에서 그것 자신이 어떻게 보여지는지 알고 있다. * 각 DateTimeField 는 공짜 자바스크립트 단축키들을 얻는다. Dates는 "Today" 단축키와 달력 팝업을 얻고, times는 "Now" 단축키와 일반적으로 등록된 시간을 기입하는 편리한 팝업을 얻는다. 페이지의 아래 부분은 몇몇 옵션을 준다: * Save -- 바꾼 것을 저장하고, 객체의 유형을 위해 change-list page 로 돌아온다. * Save and continue editing -- 바꾼 것을 저장하고, 이 객체를 위해 관리자 페이지로 다시 돌아온다. * Save and add another -- 바꾼 것을 저장하고, 새롭게 빈 형태로 돌아온다. * Delete -- 확인 페이지 삭제하는 것을 보여준다. "Today"와 "Now" 단축키들을 클릭하기 위해서 "Date published"를 바꿔라. 그 때, "Save and continue editing" 을 클릭하라. 그리고 나서, 오른쪽 위에 "History" 를 클릭하라. 바꾼 사람의 timestamp와 사용자이름과 함께, 장고 관리자를 경유해서 이 객체를 만들었던 모든 과정들을 페이지에서 볼 수 있을 것이다. {{attachment:admin06.png}} == 관리자 폼의 주문 제작 == 당신은 코드를 작성하지 않았지만 몇 분후에 놀랄만한 일이 벌어진다. 비트로 이것을 만들자. 우리는 meta.Admin에 fields변수를 추가하는 것에 의해 항목들을 재주문할 수 있다: {{{#!python admin = meta.Admin( fields = ( (None, {'fields': ('pub_date', 'question')}), ), ) }}} 그것은 두번째 대신에 첫번째로 보여지는 "Publication date" 를 만들었다. {{attachment:admin07.png}} 오직 두개의 항목은 인상적이지 않지만, 직관적인 주문을 하기 위한 수십개의 관리자 폼은 중요하게 사용하는 항목이다. 수십개의 항목들을 가진 폼들이 말하는 것은 당신이 항목구성으로 폼을 분리하기를 원할지도 모른다는 것이다. {{{#!python admin = meta.Admin( fields = ( (None, {'fields': ('question',)}), ('Date information', {'fields': ('pub_date',)}), ), ) }}} fields안 각 튜플의 첫번째 요소는 항목구성의 제목이다. 지금까지 우리의 폼이 무엇을 보았는지가 여기에 있다: {{attachment:admin08.png}} 각각의 항목구성에 임의의 HTML 클래스들을 배정할 수 있다. 장고는 처음에 실패했던 특별한 항목구성을 보여주는 "접힘 (collapse)" 를 제공한다. 이것은 평상시 사용하지 않는 수많은 항목들을 포함하는 긴 폼을 가질때 유용하다: {{{#!python admin = meta.Admin( fields = ( (None, {'fields': ('question',)}), ('Date information', {'fields': ('pub_date',), 'classes': 'collapse'}), ), ) }}} {{attachment:admin09.png}} == 연결된 객체들 추가하기 == 우리는 Poll 관리자 페이지를 가지고 있다. 하지만 Poll은 다수의 Choice를 가지고 있고, 관리자 페이지는 choices를 볼수가 없다. 그럼에도 불구하고. 이 문제를 푸는 두가지 방법이 있다. 첫번째는 우리가 Poll에서 했던 것처럼 Choice 모델에 그것 자신의 admin 속성을 주는 것이다. 여기에 그것이 무엇처럼 보이는지 볼 수 있다: {{{#!python class Choice(meta.Model): # ... class META: admin = meta.Admin() }}} 이제, "Choices"는 장고 관리에서 이용할 수 있는 옵션이다. "Add choice" 폼은 이와 같이 보인다: {{attachment:admin10.png}} 폼에서, "Poll" 항목은 데이타베이스 안에 모든 poll을 포함하는 선택박스이다. 장고는 ForeignKey가