Juni_Dev_log

북마크 앱 만들기 ① "애플리케이션 설계하기" with Django 본문

Project/Bookmark APP 만들기 (Django)

북마크 앱 만들기 ① "애플리케이션 설계하기" with Django

Juni_K 2020. 8. 14. 10:52

장고 프로젝트를 진행하기 위해서 어떻게 앱을 설계할지 먼저 생각해보자.

 

사용자에 눈에 보이는 화면 -> UI

화면에 접속하기 위한 -> URL

서버에 필요한 테이블 및 처리 로직 등을 설계한다.

 


1. 화면 UI 설계

UI 설계는 주로, 템플릿 코드에 반영되고, templates/ 디렉터리 하위의 .html 파일에 코딩한다.

화면에 표시되어야할 주요 항목들을 표시한다.

실제 프로젝트에서는 이보다 훨씬 더 복잡한 '화면 정의서' 라는 문서로 별도 작성하는 경우도 있다.

 


2. 테이블 설계

테이블 설계 내용은 모델 코딩에 반영되고, models.py 파일에 코딩한다.

간단한 앱이기 때문에, Bookmark 테이블 하나만 필요하기 때문에, 다음과 같은 테이블을 설계했다.

 

필드명 타입 제약 조건 설명
id Integer PK, Auto Increment 기본키(Primary Key)
title CharField(100) Blank 북마크 제목
url URLField Unique 북마크 URL

 


3. 로직 설계

로직 설계는 처리 흐름을 설계하는 것으로, 웹 프로그래밍에서는 URL을 받아서 최종 HTML 템플릿 파일을 만드는 과정이 하나의 로직이 된다.

 

그 과정에서 리다이렉션이 일어날 수도 있고, 템플릿 파일에서 URL 요청이 발생할 수도 있다.

이러한 과정들을 고려해서 문서로 표현하는 것이 로직 설계 과정이며, 설계의 핵심이다.

 

이 프로젝트에서는 로직 설계를 간략화해서 URL - 뷰 템플릿 간의 처리흐름만을 표시했고, 이는 바로 다음단계인 URL 설계에 반영된다.

 

URL View Templates
/bookmark/ BookmarkLV.as_view() bookmark_list.html
/bookmark/99/ BookmarkDV,as_view() bookmark_detail.html

 


4. URL 설계

URL 설계 내용은 URLconf 코딩에 반영되고, urls.py 파일에 코딩한다.

이 단계에서 중요한 점은 URL 패턴, 뷰 이름, 템플릿 파일 이름 및 뷰에서 어떤 제너릭 뷰를 사용할 것인지 등을 결정하는 것이다. 그리고 그들 간의 매핑을 정리하면 이해하기 쉽다.

 

북마크 앱 - URL 설계

URL 패턴 뷰 이름 템플릿 파일 이름
/bookmark/ BookmarkLV(ListView) bookmark_list.html
/bookmark/99/ BookmarkDV(DetailView) bookmark_detail.html
/admin/ (장고 제공 기능) 북마크 URL

 


5. 작업 코딩 순서

장고는 MVT 패넡에 따라 개발하도록 설계되었다.

테이블 정의가 중요하고, 모델코딩은 뷰 또는 템플릿과 독립적으로 이루어지므로 가장 먼저 코딩한다.

그리고 URL, 뷰, 템플릿 매핑은 URLconf 코딩시 결정되고, 클래스 형 뷰를 사용하므로 템플릿보다 뷰를 먼저 코딩하는 것이 편리하다.

그래서 코딩 순서는 "모델→URLconf→뷰→템플릿" 순서로 진행할 것이다.

코딩 외에도 장고 셸 명령이 필요하므로, 이들을 포함해 작업순서를 아래와 같이 정한다.

 

북마크 앱 - 작업/코딩순서

뼈대만들기 startproject 
settings.py
migrate
createsuperuser
startapp
- mysite 프로젝트 생성 (startproject)
- 프로젝트 설정 항목 변경 (settings.py) - User/Group 테이블 생성 (migrate)
- 프로젝트 관리자인 슈퍼유저를 만듦 (createsuperuser)
- 북마크 앱 생성 (startapp)
- 북마크 앱 등록 (settings.py)
모델 코딩하기 models.py
admin.py
makemigrations
migrate
- 모델(테이블)의 정의 (models.py)
- Admin 사이트에 모델 등록 (Admin.py)
- 모델의 변경사항 추출 (makemigrations)
- 변경사항을 데이터베이스에 반영 (migrate)
URLconf 코딩하기 urls.py URL 정의
뷰 코딩하기 views.py 뷰 로직 작성
템플릿 코딩하기 templates 디렉터리 템플릿 파일 작성
그 외 코딩하기    

 


(다음 포스팅)

2020/08/18 - [Project/Bookmark APP 만들기 (Django)] - 북마크 앱 만들기 ② with Django

 

북마크 앱 만들기 ② with Django

코딩의 시작은 프로젝트 뼈대를 만드는 것에서부터 시작한다. 즉 프로젝트에 필요한 디렉터리 및 파일을 구성하고, 설정 파일을 세팅한다. 그 외에도 기본 테이블을 생성하고, 관리자 계정인 슈

juni-dev-log.tistory.com

 

Comments