Skip to content

4-1. 어플리케이션 분석 & 설계

장고(Django) 프레임워크

이번 장에서는 어플리케이션을 개발하기 전에 어떤 웹 사이트를 만들지(분석), 어떻게 만들지에 대해서(설계), 사용자의 요구되는 사항을 정리하고, 제공해야 하는 기능을 도출하고, 화면에 어떤 내용을 표시 할지 및 데이터베이스를 어떻게 정의할지에 대해서 살펴보겠습니다.

4-1-1 설문조사 사이트

이번 장에서는 첫 번째 장고 어플리케이션을 작성하도록 하겠습니다.
간단한 설문조사(Polls) 어플리케이션을 만드는 과정을 따라하면서, 장고 어플리케이션에 구조 대해서 이해할 수 있습니다.

어떤 서비스를 만든다는 것은 전체의 구성을 알고 그에 맞처 다양한 기능을 만들어 가는 과정입니다. 실제 개발을 하기에 앞서 전체 기능등을 살펴보겠습니다.

설문조사 어플리케이션은 두 개의 파트로 구성되어 있습니다.

  • 사람들이 설문 내용을 보고 직접 투표할 수 있는 개방된 사용자 웹 화면 ch04-01-01_01.png 그림4-1-1 설문조사 사용자 화면 예시

  • 관리자가 설문을 추가, 변경, 삭제할 수 있는 관리용 웹 화면 ch04-02.png 그림4-1-1 설문조사 관리자 화면 예시

4-1-2 설문조사 분석

사용자 화면과 관리자 화면으로 구분된다.

  • 사용자 화면
    • 전체 설문리스트를 화면에 보여준다.
    • 설문리스트에서 한개의 항목을 클릭하면 설문에 해당하는 질문을 보여준다.
    • 질문에서 한개를 선택하고, 투표 버튼을 클릭한다.
    • 해당 설문에 대한 투표 결과를 보여준다.
  • 관리자 화면
    • 설문항목에 대해서 추가, 변경, 삭제 할 수 있는 화면을 제공해야 한다.

4-1-3 설문조사 설계

4-1-3-1 사용자 화면 설계

투표목록: 관리자 페이지에서 만든 투표 목록이 나타납니다. 각 투표는 투표 제목이 출력되고 해당 제목을 클릭하면 투표 화면으로 이동 합니다.

ch04-01-03-01_01.png 그림4-1-3 투표목록

투표화면: 투표 화면에는 투표 제목과 투표 항목 목록이 나타납니다. 라디오(Radio) 버튼과 함께 표시해두고 선택할 수 있도록 만들었습니다. 한 항목을 선택하고 Vote 버튼을 클릭하면 투표 결과 화면으로 이동합니다.

ch04-01-03-01_02.png 그림4-1-3 투표선택 화면

투표화면: 투표 화면에는 투표 제목과 투표 항목 목록이 나타납니다. 라디오(Radio) 버튼과 함께 표시해두고 선택할 수 있도록 만들었습니다. 한 항목을 선택하고 Vote 버튼을 클릭하면 투표 결과 화면으로 이동합니다.

ch04-01-03-01_03.png 그림4-1-3 투표결과 화면

4-1-3-2 관리자 화면 설계

투표목록: 관리자 페이지에서 만든 투표 목록이 나타납니다. 각 투표는 투표 제목이 출력되고 해당 제목을 클릭하면 투표 화면으로 이동 합니다. ch04-01-03_01.png 그림4-1-3 관리자 투표목록

4-1-3-3 데이터베이스 설계

앞의 분석 & 설계 단계에서 정의한 기능에 대해서 데이터베이스를 설계하는 단계입니다. 설문조사에 필요한 테이블은 2개로 구성되어 있으며 아래와 같습니다.

  • 테이블 목록

  • 테이블 상세

  • 테이블명: 설문조사 리스트

Name영문명타입클래스변수장고의 필드 클래스
순번Idinteger(id)(장고에서 자동생성)
설문제목question_textvarchar(200)question_textmodels.CharField(max_length=200)
생성일자pub_datedatetimepub_datemodels.DateTimeField('date published')
SQL 테이블 생성 스크립니다.

CREATE TABLE "polls_question" (
"id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
"question_text" varchar(200) NOT NULL,
"pub_date" datetime NOT NULL
);

  • 테이블명: 설문조사 선택항목
Name영문명타입클래스변수장고의 필드 클래스
순번Idinteger(id)(장고에서 자동생성)
선택항목choice_textvarchar(200)choice_textmodels.CharField(max_length=200)
건수votesintegervotesmodels.Integer(default=0)
설문조사순번question_idintegerquestionmodels.ForeingKey(Question)
SQL 테이블 생성 스크립니다.

CREATE TABLE "polls_choice" (
"id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
"choice_text" varchar(200) NOT NULL,
"votes" integer NOT NULL, "question_id" bigint NOT NULL REFERENCES
"polls_question" ("id") DEFERRABLE INITIALLY DEFERRED
);

CREATE INDEX "polls_choice_question_id_c5b4b260" ON "polls_choice" ("question_id");

Released under the MIT License.