-
3. Django: 'start app' and 'MTV'Python/초간단 장고 Django 2019. 7. 7. 00:10반응형
장고로 하나의 웹 사이트에서 여러 가지 서비스를 제작해 올릴 수 있습니다.
예를 들자면 인스타그램, 트위터, 블로그 ...
각각의 서비스를 앱이라고 부릅니다.실제 장고 사용자들은
더 작은 단위 (예를 들자면 로그인)까지
앱으로 나눕니다.장고 공식 홈에는 설문조사 앱에 대한 한글 튜토리얼이 있습니다.
https://docs.djangoproject.com/ko/2.2/intro/장고 걸스 홈에는 간단한 블로그 앱에 대한 한글 튜토리얼이 있습니다.
https://tutorial.djangogirls.org/ko/django_start_project/보통 가장 먼저 만드는 앱이 북마크 앱, 설문조사 앱, To do (할 일) 앱입니다.
이 중 난이도가 가장 낮은 북마크 앱을 만들어 보겠습니다.1. startapp
파이참 터미널에서 다음을 실행해 봅니다.
python manage.py startapp bookmarks
실행 후 폴더와 파일을 확인합니다.
(venv) C:\PyProjects\myapp>python manage.py startapp bookmarks (venv) C:\PyProjects\myapp>dir C 드라이브의 볼륨: OS 볼륨 일련 번호: B457-0D6A C:\PyProjects\myapp 디렉터리 2019-07-06 오후 11:10 <DIR> . 2019-07-06 오후 11:10 <DIR> .. 2019-07-06 오후 10:58 <DIR> .idea 2019-07-06 오후 11:10 <DIR> bookmarks 2019-07-06 오후 08:45 <DIR> config 2019-07-06 오후 10:22 131,072 db.sqlite3 2019-07-06 오후 08:18 647 manage.py 2019-07-06 오후 07:27 <DIR> venv 2개 파일 131,719 바이트 6개 디렉터리 338,136,072,192 바이트 남음 (venv) C:\PyProjects\myapp>cd bookmarks (venv) C:\PyProjects\myapp\bookmarks>dir C 드라이브의 볼륨: OS 볼륨 일련 번호: B457-0D6A C:\PyProjects\myapp\bookmarks 디렉터리 2019-07-06 오후 11:10 <DIR> . 2019-07-06 오후 11:10 <DIR> .. 2019-07-06 오후 11:10 66 admin.py 2019-07-06 오후 11:10 98 apps.py 2019-07-06 오후 11:10 <DIR> migrations 2019-07-06 오후 11:10 60 models.py 2019-07-06 오후 11:10 63 tests.py 2019-07-06 오후 11:10 66 views.py 2019-07-06 오후 11:10 0 __init__.py 6개 파일 353 바이트 3개 디렉터리 338,136,072,192 바이트 남음 (venv) C:\PyProjects\myapp\bookmarks>
파일을 열어보면 다 비어 있습니다.
틀만 잡아둔 거죠.
이제 하나하나 만들어야합니다.만들기 전에 알아야 할 것이 있습니다.
2. 장고 MTV
장고는 MTV 구조를 가집니다.
'모델', '템플릿', '뷰'의 약자인데요.다른 웹 프레임워크에서
MCV(모델, 뷰, 컨트롤러)라고 하는 것과
거의 같은 겁니다.왜 이런 구조를 가지게 되었을까요?
대부분의 웹페이지를 보면
화면 레이아웃을 담당하는 HTML, Java Script와 CSS.
로직을 담당하는 언어(Java, PHP, Python)와
DB를 담당하는 SQL까지 사용됩니다.웹 페이지는 4~5가지 이상의 언어가 짬뽕된
혼돈의 도가니탕입니다.각각의 담당자가 붙어서 작업을 하다 보면
버전 관리도 어렵고..
실수로 다른 이의 작업 내용을 건드릴 수도 있습니다.그렇다면,
이것을 기능적(=담당자를 기준)으로 구분하면
더 효율적이겠죠?1. 웹디자이너 또는 프론트엔드 담당자
2. PHP나 파이썬, 자바 등으로 중간에서 로직을 만드는 프로그래머
3. DB 담당자MCV 패턴은 이런 경우에 효과적입니다.
사용자의 눈에 보이는 부분을
뷰(장고에선 템플릿)...사용자와 가장 먼 쪽에 있는
DB와 관련된 부분을 모델...모델과 뷰 사이에서 로직을 담당하는 부분을
컨트롤러(장고에서는 프레임워크 그 자체와 뷰)...이렇게 3 부분으로 분리를 합니다.
장고에서는 MCV가 아닌 MTV라는 용어를 사용합니다.
공식 홈페이지의 FAQ에는
장고에서 'MCV의 컨트롤러'에 해당하는 부분은
장고 웹 프레임워크 그 자체이기 때문이라고...https://docs.djangoproject.com/ko/2.2/faq/general/
전 장고의 클래스 뷰를 보면서
장고의 컨트롤러는 장고 자체라는 말이
어느 정도 이해되었습니다.3. 그럼 MTV 중 뭘 만들지?
정석은 없겠습니다만,
일단 대략의 UI를 구상하고,
UI에서 필요한 데이터 구조(테이블)를 설계한 뒤,
UI를 실행할 때 필요한 url을 뽑고,
모델, 뷰, 템플릿의 순서로 프로그래밍하는 것이 일반적이겠죠?북마크 앱이라면..
주소로 가득 찬 화면이 떠오르고..
(사이트명, 주소)입력을 처리하는 화면도 떠오르고..수정해야 할 일이 있을 수도 있으니 수정 화면도 떠오르고..이 정도만 있으면 앱이 잘 돌아갈 것 같네요.
입력과 수정은 관리자 페이지에서 처리하고 메인 화면만 작성하겠습니다.
'최대한 간략하게'가 이번 연재의 목표입니다.메인 화면 하나만 쓸 예정이라 추가 url은 필요 없고..
모델에서 필요한 건 사이트 명, 주소가 들어 있는 테이블이 되겠습니다.일단 모델을 작성한 뒤 모델을 데이터베이스와 관리자 페이지에 반영해
잘 돌아가는지 확인부터 해보고 뒤에 뷰와 탬플릿을 작성하겠습니다.반응형