개발 블로그

[Django] lotto 번호 자동생성 웹 서비스 (01. MTV패턴, 환경구축) 본문

Django

[Django] lotto 번호 자동생성 웹 서비스 (01. MTV패턴, 환경구축)

draidev 2022. 5. 16. 23:39

 

Django 설치 후 첫 웹페이지 실행화면

Django의 입문 튜토리얼인 lotto웹사이트 제작을 진행해보겠습니다.

튜토리얼 시작에 앞서 장고의 디자인패턴인 MVT패턴에 대해 짚고 넘어가겠습니다.

 

00. Django - MTV 패턴

우선 Django프레임워크는 MTV Pattern라는 디자인 패턴을 가지고 있습니다.

  • Model : 데이터베이스 조작
  • Template : 사용자 인터페이스 구현
  • View : 내부 계산 & 데이터 처리 로직, Model로 부터 데이터를 쉽게 가져오게 됨

MVC모델과 비교했을때 장고의 Template이 View의 역할을 하고 장고의 View는 url을 parsing하는 controller의 역할을 한다고 볼 수 있습니다.

 

웹에서 장고의 MTV 패턴은 다음과 같이 동작합니다.

 

00_01 MVT 패턴 & Django inside

아래는 장고의 동작 과정을 나타낸 그림으로 사용자는 주로 초록상 상자로 표시된 부분을 코딩합니다.

1) URLconf

URL은 주로 다음과 같이 구성됩니다.

  • 클라이언트가 특정 페이지를 요청하기 위해 서버에 URL을 보내면 서버는 URLconf 모듈을 이용해 URL을 분석합니다.
  • URL/View 맵핑을 위해 사용하는 path 함수는 함수 내 변수로 주어진 URL과 요청받은 URL이 일치하면 특정View를 호출합니다.

장고 1.x 버전에서는 url 함수를 사용했지만, 장고 2.x 버전부터는 path 함수를 사용합니다.

url(r'^(?P<pk>\d+)/vote/$', views.vote, name='vote')
path('<int:pk>/vote/', views.vote, name='vote')

 

01. 프로젝트 생성하기

그럼 이제 Django를 이용한 웹사이트 만들기 튜토리얼을 시작해보겠습니다.

01_01) 가상환경 및 장고 설치

우선 장고 프로젝트를 진행할 폴더를 위의 경로에 만들어주고 관리자 권한으로 실행한 cmd창에서 접근합니다.

그리고 다음과 같이 가상 환경과 장고를 install해줍니다.

pip install virtualenv==20.13.2 -> 가상 환경을 만들어주는 라이브러리입니다.

virtualenv django_env -> django_env 라는 이름으로 가상 환경을 새로이 만듭니다.

django_env\Scripts\activate -> Scripts 폴더 내의 activate 파일을 실행해 가상 환경을 활성화합니다.

pip install django==3.2 -> 가상 환경위에 장고를 설치해줍니다.

 

 

01_02) 장고 프로젝트 생성

django-admin startproject [프로젝트 이름]

위의 명령어를 통해 프로젝트를 생성해 줍니다. 저는 site_1이라는 이름으로 프로젝트를 생성했기 때문에

django-admin startproject site_1 을 입력했습니다.

 

01_03) 장고 앱 생성

python manage.py startapp [앱 이름]

위의 명령어를 입력하여 앱(웹사이트 내에 있는 하나의 기능들)폴더를 만들어 줍니다.

이때 settings.py파일에서 INSTALLED_APPS에 앱을 추가해 주어야 합니다.

 

 

01_04) 장고 프로젝트 server 실행

python manage.py runserver

cmd창에서 위의 명령어를 입력한 후에 정상적으로 서버가 작동한다면 웹에 로컬서버주소(127.0.0.1:8000)를 입력한다면 장고 웹페이지가 뜨는 것을 확인 할 수 있습니다.

 


위의 과정을 진행한 폴더를 VScode로 폴더를 불러오면 다음과 같은 파일이 있는걸 확인 할 수 있습니다.

(어느정도 진행하고 찍은 캡처라서 맨 처음 파일의 상태와는 다를 수 있습니다.)

이제 웹사이트를 만들기 위한 기본적인 세팅은 끝났습니다. 어떤 웹사이트를 만들던 위의 과정은 시작할 때 계속 거쳐야될 과정일 것입니다.

다음에는 앱의 기능을 구현하는 과정을 진행해보겠습니다:)

 

Comments