ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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은 필요 없고..
    모델에서 필요한 건 사이트 명, 주소가 들어 있는 테이블이 되겠습니다. 

     

    일단 모델을 작성한 뒤 모델을 데이터베이스와 관리자 페이지에 반영해
    잘 돌아가는지 확인부터 해보고 뒤에 뷰와 탬플릿을 작성하겠습니다. 

    반응형
Designed by Tistory.