6-1. Dstagram 서비스 분석&설계
학습목표
이번 장에서는 Dstagram (블로그 사진) 실습 프로젝트로 만들어 보겠습니다. *스타그램처럼 사진을 업로드하고, 댓글기능을 가진 웹 서비스 입니다. 이번 실습을 통해서 웹 서버에서 파일을 관리하고, HTML Form 형식의 데이터를 처리하는 부분에 대해서 학습하게 됩니다. 따라서, 서비스 하려고 하는 기능을 도출하고, 웹 서비스를 개발하기 위한 분석/설계 과정을 살펴 보도록 하겠습니다.
실습 목표
- 로그인
- 웹 페이지 접속 권한
- 사용자 등록
- HTML Form 양식
- HTTP POST Method (Insert/Select/Update/Delete)
- 파일전송
- 댓글 모듈 사용
6-1-1. 기능
다음에 Dstagram 서비스에서 제공할 기능에 대해서 살펴보겠습니다.
사용자 기능
- 아이디/패스워드로 로그인 가능해야 한다.
- Photo 전체 리스트를 첫 로그인 후 화면에 표시한다.
- Photo 사진을 새로 등록 할 수 있어야 한다.
- Photo 사진을 상세 정보를 볼수 있어야 한다.
- Photo 사진을 수정 할 수 있어야 한다.
- Photo 사진을 삭제 할 수 있어야 한다.
- Photo 에 댓글을 쓸수 있어야 한다.
- 회원 가입한 사람만 사진이나 댓글을 등록/수정을 할 수 있다.
관리자 기능
- 관리자 화면에서 사진,회원정보를 관리 할 수 있어야 한다. (관리란 조회, 등록, 수정, 삭제 등을 말한다.)
6-1-2. 분석
Dstagram(사진) 사이트는 사용자 웹 화면과 관리자 웹 화면으로 구성되며, 기본적인 CRUD 형태를 가지고 있습니다. 사진을 등록/수정하는 기능과 사진파일을 관린하는 기능 그리고 회원 가입(Acoount) 기능을 가지고 있습니다.
Dstagram 사이트
|
├─ 사진 WEB 화면
| ├─ 전체 사진 리스트 # Select All
| ├─ Dstagram 추가 # INSERT
| ├─ Dstagram 상세 # SELECT
| ├─ Dstagram 수정 # UPDATE
| └─ Dstagram 삭제 # DELETE
|
├─ 회원가입
| ├─ 입력 화면 # input form
| └─ 회원가입 완료 화면
|
└─ 관리자 WEB 화면
├─ 사진 관리 # Photo 사진 관리
└─ 회원 관리 # Account 사진 관리
Dstagram 사이트
|
├─ 사진 WEB 화면
| ├─ 전체 사진 리스트 # Select All
| ├─ Dstagram 추가 # INSERT
| ├─ Dstagram 상세 # SELECT
| ├─ Dstagram 수정 # UPDATE
| └─ Dstagram 삭제 # DELETE
|
├─ 회원가입
| ├─ 입력 화면 # input form
| └─ 회원가입 완료 화면
|
└─ 관리자 WEB 화면
├─ 사진 관리 # Photo 사진 관리
└─ 회원 관리 # Account 사진 관리
6-1-3. 설계
Dstagram 어플리케이션을 개발하기 위해서는 제공해야 하는 기능을 정의해야 하고, 사용자/관리자 화면 설계하고, 사용하는 데이터베이스에 대해서 설계를 해야 합니다.
6-1-4. 사용자 화면
첫 화면 로그인 그림6
가입 그림6
Photo Upload 완료 -> Photo 목록 그림6
Photo Upload 그림6
그림5-1-3. 북마크 수정 그림5-1-3. 북마크 삭제
6-1-5. 관리자 화면
- Photo 사진 관리 그림6
6-1-6. 데이터베이스 설계
앞의 분석 & 설계 단계에서 정의한 기능에 대해서 데이터베이스를 설계하는 단계입니다. 북마크에 필요한 테이블은 2개로 구성되어 있으며 아래와 같습니다.
- 테이블 리스트
- 테이블명: 사진정보(photo)
- 테이블설명: 사진 정보를 관리한다.
Name | 영문명 | 타입 | 클래스변수 |
---|---|---|---|
순번 | id | integer | (id) |
사진필드 | photo | ImageField | models.ImageField |
텍스트 | text | 텍스트 | models.TextField |
생성일자 | created | 날짜 | models.DateTimeField |
수정일자 | updated | 날짜 | models.DateTimeField |
등록자 | author | integer | models.ForeignKey |
SQL 테이블 생성 스크립니다.
CREATE TABLE "photo_photo" (
"id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
"photo" varchar(100) NOT NULL, "text" text NOT NULL, "created" datetime NOT NULL,
"updated" datetime NOT NULL,
"author_id" integer NOT NULL REFERENCES
"auth_user" ("id") DEFERRABLE INITIALLY DEFERRED
);
CREATE INDEX "photo_photo_author_id_c3932836" ON "photo_photo" ("author_id");
COMMIT;