Korean translation of http://www.djangoproject.com/documentation/tutorial3

<--

[../Tutorial2]

[../Tutorial4]

-->

당신의 첫번째 장고 프로그램 만들기, part 3

TableOfContents

이 문서는 Django 0.9.1을 다룬다. 구버전 : 0.90 docs

By Adrian Holovaty <holovaty@gmail.com>, Translated by [parkpro77]

튜토리얼 2를 끝마치면 이 튜토리얼을 시작한다. 우리는 웹 투표 프로그램을 계속 만들것이고, 공개화면 (public interface)를 만드는 데 주력할 것이다 -- "보기 (views)"

원리

보기 (view)는 일반적으로 특별한 기능을 제공하는 장고 프로그램에서 웹 페이지의 "형태"이고, 특별한 템플릿을 가진다. 예를 들어, 웹블로그 프로그램에서, 당신은 다음 보기들을 가질지도 모른다:

  • Blog homepage -- 최근 소수의 입장을 보여준다.
  • Entry "detail" page -- 개인 입장 (single entry)을 위한 불변링크 (permalink).
  • Year-based archive page -- 입장객들에 대한 주어진 해에 모든 달을 보여준다.
  • Day-based archive page -- 주어진 날에 모든 입장객들을 보여준다.
  • Comment action -- 주어진 입장에 알리는 주석들 (posting comments)을 처리한다.

투표 프로그램에서, 우리는 다음 네가지 보기를 가질 것이다:

  • Poll "archive" page -- 최근 소수의 투표를 보여준다.
  • Poll "detail" page -- 결과는 없지만 투표하는 형태를 가진 투표 질문 (poll question)을 보여준다.
  • Poll "results" page -- 특별한 투표에 대한 결과를 보여준다.
  • Vote action -- 특별한 투표에서 특별한 선택을 하기 위한 투표를 처리한다.

장고에서, 각 보기는 간단한 파이썬 기능에 의해 표현되어졌다.

URL들을 만들기

보기들을 쓰는 첫번째 단계는 당신의 URL 구조를 만드는 것이다. URL 구조는 URLconf로 불려지는 파이썬 모듈을 만드는 것이다. URLconfs 는 장고가 어떻게 주어진 파이썬 코드와 주어진 URL을 결합시키는가 하는 것이다.

사용자가 장고 페이지를 요청했을 때, 파이썬의 점으로 된 문법 (Python dotted syntax)에 문자열을 포함하는 ROOT_URLCONF 구성을 시스템에서 본다. 장고는 모듈을 적재하고, 다음 형식에서 튜플들의 연속인 urlpatterns 라 불려지는 다양한 모듈 단계를 찾는다:

   1 (regular expression, Python callback function [, optional dictionary])

장고는 첫 일상적인 표현을 시작하고, 그것이 적합한 하나를 찾을 때까지, 각 일상적인 표현에 대한 요청된 URL을 비교하는 목록 아래 그것의 방법을 만든다.

그것이 서로 맞는것을 찾을 때, 장고는 첫 인수로서 HTTPRequest 객체와 함께 파이썬 회수 (callback)기능을 호출하고, 키워드 인수로서 일상적인 표현으로부터 어떤 "입력된 (captued)"값을 호출하고, 선택적으로, 디렉토리 (튜플에서 부가적인 세번째 항목)로부터 임의의 키워드 인수들을 호출한다.

HTTPRequest 객체에 대해 더 알고 싶다면, [http://www.djangoproject.com/documentation/request_response/ request and response documentation]을 보아라. URLconfs에 대해 알고 싶으면, [http://www.djangoproject.com/documentation/url_dispatch/ URLconf documentation]을 보면 된다.

튜토리얼1의 시작에서 python manage.py startproject myproject 를 실행했을 때, 그것은 myproject/urls.py 에 초기설정으로 URLconf를 만들었다. 또한, 그 파일을 지목하기 위해 ROOT_URLCONF 를 구성했다:

   1 ROOT_URLCONF = 'myproject.urls'

이제는 예제. myproject/urls.py 를 이와 같이 편집하라:

   1 from django.conf.urls.defaults import *
   2 
   3 urlpatterns = patterns('',
   4     (r'^polls/$', 'myproject.polls.views.index'),
   5     (r'^polls/(\d+)/$', 'myproject.polls.views.detail'),
   6     (r'^polls/(\d+)/results/$', 'myproject.polls.views.results'),
   7     (r'^polls/(\d+)/vote/$', 'myproject.polls.views.vote'),
   8 )

이것은 재검토 해볼만하다. 누군가가 당신의 웹 싸이트 페이지를 요청할 때 -- "/polls/23/"을 말하는, 장고는 이 파이썬 모듈을 적재할 것이다. 왜냐하면, 그것은 ROOT_URLCONF 구성에 의해 지목되어졌기 때문이다. 그것은 다양하게 이름지어진 urlpatterns 를 찾고, 순서에 따라 일상적인 표현은 통과한다. 그것이 일상적인 표현을 찾을 때, --r'^polls/(\d+)/$'-- 과 들어 맞게 되고, 결합되어진 파이썬 package/module 을 적재한다: myproject.polls.views.detail. 그것은 myproject/polls/views.py 안에 detail() 기능과 일치한다. 결국엔, 이와 같이 detail() 기능을 호출한다:

   1 detail(request=<HttpRequest object>, poll_id='23')

poll_id='23' 은 (\d+)으로부터 나온다.

Write your first view

Write views that actually do something

A shortcut: render_to_response()

Raising 404

A shortcut: get_object_or_404()

Write a 404 (page not found) view

Write a 500 (server error) view

Use the template system

Simplifying the URLconfs

Decoupling the URLconfs

web biohackers.net