2017-12-22 TIL

첫번째 장고앱: 로또 만들기

장고와 MTV(Model Template View)

MTV

  1. 사용자가 웹 브라우져에서 주소(URL)를 입력한다.(ex http://www.inflearn.com~)
  2. 위 URL을 입력하면 HTTP Request형태로 Web server에 전달됨
  3. Web server에서 Routing(urls.py:URL dispatcher)으로 전달됨 WSGI(Web Server Gateway Interface) = Web server와 Django에 URL파일을 연결해줌
  4. urls.py에서 url을 파싱하고 View(URL을 처리하는 규칙)로 전달됨, View는 콘트롤러가 아니다. Response를 바로 사용자에게 돌려줄 수 있다(일반적으로는 Template과 Model까지 활용) MVC(Model View Controller)와 비교했을 때 view는 의미가 서로 다름. MVC에서 Controller는 Django
  5. View에서 Model로 넘어가는데 Model은 object임. Model object는 DB를 쉽게 조작할 수 있게 한다. object로 관리를 하여 영구적으로 읽고 쓰기가 가능하다.
  6. View와 Model을 거쳐 생겨난 보통 dictionary형태(object)의 date는 view를 다시 거쳐 Template으로 전달됨.
  7. Template는 data를 디자인 요소로 처리하여 View로 다시 되돌려준다.
  8. 마지막으로 view는 완전히 처리된 data를 reponse한다.

프로젝트 및 앱 생성

1.가상환경 만들기

$ mkdir pythonenv
$ cd pythonenv
$ python3 -m venv app1env
$ source app1env/bin/activate

2.장고 설치

장고를 설치하는데 필요한 pip이 최신버전인지 확인인

(app1env) $ pip install --upgrade pip

장고설치

(app1env) $ pip install django~=1.10

그 후 workspace로 이동하여 작업함

3.프로젝트 생성

(app1env) $ django-admin startproject mysite

4.App 생성

(app1env) $ python manage.py startapp lotto

atom 에디터 연 후 setting 파일 수정 및 app 등록

LANGUAGE_CODE = ‘ko-kr’ timezone = ‘Asia/Seoul’ STATIC_ROOT = os.path.join(BASE_DIR, ‘static’) … INSTALLED_APPS = [ … , ‘lotto’, ]

5.server start

python manage.py runserver

serverStart

6.확인

브라우저 열고 127.0.0.1:8000/ 접속해서 정상동작 확인 confirm

장고와 MTV에 관한 강의를 들었다. 익숙하지 않은건지 이해력이 부족한건지 잘 모르겠지만….익숙하지 않은 걸로 합리화하자!

이해안가는 점(나중에 이해하게 되면 아래에 덧 붙이도록 할 예정)

  1. URL을 입력하면 web server에 전달이 되고 Routing으로 다시 전달이 되는데 이때 전달되는 형태는?
  2. URL파일이란 무엇인가?
  3. Model object는 DB를 쉽게 조작할 수 있게 해주는데 이로써 영구적으로 읽고 쓰기가 가능하다?

수 만가지 궁금한 점이 있지만 일단 이해하려고 하면 안될 것 같다 익숙해지는 것에 먼저 초점을 두고 조금 감이 왔다 싶을 때 깊게 생각해보는게 좋을 것 같다. 장고 강의를 따라하다가 머리속이 뒤죽박죽 되어서 그냥 멍 놓고 강사님이 하는 걸 지켜보기로 했다. 흠…강의중에 Views, Model, Template 계속 건드리면서 설명해주시지만 아직도 얘네가 뭐하는 놈들인지 감이 안온다.

유저가 request를 보내면 미리 설정된 urls.py가 어디로 가는지 연결시켜주고 일단 views로 보내면 model과 template가 각각 일을 해서 다시 views로 보내고 이를 user에게 다시 response해준다는 것으로 일단 이해했다.

Comments