grape

[Django 01] - 동작 원리 및 기본 설정 본문

웹 프로그래밍/Django

[Django 01] - 동작 원리 및 기본 설정

grape-story 2021. 5. 27. 19:43

Django 란 ?

Django는 Python으로 만들어진 무료 오픈소스 웹 애플리케이션 프레임워크(Web Application Framework)로, 쉽고 빠르게 웹사이트를 개발할 수 있도록 돕는 구성요소로 이루어져 있다. 웹사이트를 구축할 때, 비슷한 유형의 요소들이 항상 필요하다. 예를 들어 회원가입, 로그인, 로그아웃과 같이 사용자 인증을 다루는 방법이나 웹사이트의 관리자 패널, 폼, 파일 업로드와 같은 것들이다. 이런 부분을 바로 사용할 수 있도록 구성요소들을 갖춘 여러 프레임워크를 오래전에 만들었엇는데 Django도 그 중 하나인 것이다. 

 

 

프레임 워크(Framework)

프레임 워크의 사전적 정의

 

애플리케이션 프레임 워크(Application Framework)

프로그래밍에서 특정 운영 체제를 위한 응용 프로그램 표준 구조를 구현하는 클래스와 라이브러리 모임

(간단하게 프레임 워크라고 부른다.)

 

"FRAME 프레임(틀, 규칙 or 법칙)" + "WORK 워크(일, 소프트웨어의 목적)"

즉, 각 소프트웨어마다 일종의 규칙이 있고, 그 규칙을 정하는 일이다. 

 

ex) - "간편 부대찌개 만들기 세트" -> 딱 주어진 재료만 사용하면 완성되도록 구조화 되어 있는 형태 

       "장난감 성 DIY 세트" -> 주어진 재료만 써서 가이드대로 만들면 성이 완성되도록 구조화 되어 있는 형태

 

이런식으로 생각해보면 프레임워크마다 "존재하는 이유(목적)"가 있고 "프레임 워크"는 목적에 따라 효율적으로 구조를 짜놓는 개발 방식이라고 이해할 수 있다. 

 

"하나의 애플리케이션을 구축할 때, 모든 애플리케이션의 공통적인 개발 환경을 제공해주는 것. 개발에 필요한 화면구현, DB연동, 개발환경들에 공통적인 부분을 제공함으로써 개발 시간과 리소스 비용을 절감해 생산성을 높여주는 것."

 

 

정적 웹 페이지(Static Web Page) or 동적 웹 페이지(Dynamic Web Page)

 

인터넷을 이용하면서 보게되는 웹 페이지는 크게 두가지로 나눌 수 있다. 하나는 정적 웹 페이지이고 다른 하나는 동적 웹페이지이다.

 

  • Static Web(정적 웹)

Static Webpage

정적 웹 페이지는 HTML & CSS등으로만 구성된 정말 단순한 웹 서비스이다.  서버(Web server)에 미리 저장된 파일(HTML, Image, JAvaScript 등등..)이 그대로 전달되는 웹 페이지 이다. 

ex) - 이문서를 주세요 라고 요청하면, 어떠한 변형, 연산등도 없이, 단순히 문서를 보냄(응답). 서버의 파일이 도서관의 책처럼 적재되어 있고 클라이언트의 요청을 통해서 해당 파일을 마치 책을 보는 것처럼 꺼내올 수 만 있는 웹 서비스이다.

 

정적 웹 페이지 장점

- 빠르다: 요청에 대한 파일만 전송하면 되기 때문에 추가적인 작업이 없다.

- 비용이 적다: 마찬가지로 웹 서버만 구축하면 된다. 

 

정적 웹 페이지 단점

- 서비스가 한정적이다: 저장된 정보만 보여줄 수 있다.

- 관리가 힘들다: 추가/수정/삭제의 작업 모두 수동적이다. 

 

 

  • Dynamic Web(동적 웹)

Dynamic Webpage

Static Web과 상반되는개념이다. 동적으로 파일을 생성하여 뿌려주는 Web page 로 Django는 Dynamic web에 속한다. 내부적으로 연산도 가능하고, 사용자의 인풋마다 다른 아웃풋을 보여주는 동적 웹 이다. 

 

동적 웹 페이지 장점

- 서비스가 다양하다: 다양한 정보를 조합하여 동적으로 생성하여 제공 가능하다.

- 관리가 쉽다: 웹 사이트 구조에 따라서 추가/수정/삭제 등의 작업이 용이하다.

 

동적 웹 페이지 단점

- 상대적으로 느리다: 사용자에게 웹 페이지를 전달하기 전에 처리하는 작업이 필요하다.

- 추가 비용이 든다: 웹 서버외에 추가적으로 처리를 위한 어플리케이션 서버(Web Application Server)가 필요하다.

 

  • 우리가 보는 대부분의 웹 페이지는 동적 웹페이지라 할 수 있다. 커뮤니티 사이트에서 게시글을 본다거나, 뉴스 사이트에 올라오는 뉴스를 본다거나, 포털 사이트 같은 곳에서 웹툰을 본다거나, 이런 웹페이지는 사용자의 요청에 따라서 원하는 페이지를 동적으로 생성하여 보내주는 것이다. 

 

ex) - 웹 앱을 만드는 예시 

  • 웹 앱(웹 서비스) 를 만드는 것은 카페를 만드는 것과 매우 유사 하다. 
    • 카페 창업의 두가지 방법
      • 1. A-Z 모두 직접하기 “홍보 마케팅. 대출 점포인테리어, 레시피개발, 원자재 거래처 확보, 매출정산”
      • 2. 프렌차이즈 창업 “ 기본적인 레시피나 필요한 재료는 알아서 제공해줄게. 넌 좋은 카페 만드는데 집중해!”
    • 웹서비스 제작의 두가지 방법
      • 1. URL Parsing, DB setting, ORM, Security, Content Management Template, Caching, Web Server Settting
      • 2. 웹 프레임워크 사용 “기본적인 구조나 필요한 코드들은 알아서 제공해줄게. 넌 그냥 좋은 웹 서비스 만드는데 집중해!” ex) Express JS, Ruby on Rails, Python django, JAVA Spring, PHP Laravel
  • 이미 다 차려놓은것에서 필요한 것만 가져다 쓰면 되기 때문에 편리함. 많은 웹사이트가 웹프레임워크 - 장고를 기반으로 제작이 되어있음 (인스타그램, NASA, 모질라, 빗버켓)

 

 

Django의 동작 원리 및 구조

 

Django의 구조 

  • Model (데이터 관리)
  • Template(사용자가 보면 화면, UI)
  • View(중간 관리자)

 

MTV Pattern 

웹 프로그램 개발 시 일반적으로 언급되는 MVC(Model-View-Controller)패턴은 데이터, 사용자 인터페이스, 데이터를 처리하는 로직을 구분해서 한 요소가 다른 요소들에 영향을 주지 않도록 설계하는 방식이다. 이런 방식으로 개발을 진행하면 UI 디자이너와 개발자는 독립적인 영역에서 개발이 가능하게 된다. 

Django 프레임 워크에서는 Model=ModelView=Template, Controller=View,  라고 표현하며 MVC를 MTV라고 한다.

앞서 말한 것 처럼 Model은 데이터 베이스에 저장되는 데이터의 영역, Template은 사용자에게 보여지는 영역, View는 실질적으로 프로그램 로직이 동작하여 적절한 처리 결과를 Template에게 전달하는 역할을 수행 한다. 

 

 

Django의 동작 원리

동작 원리

  • 클라이언트로 부터 요청(Request)를 받으면 URLconf 모듈을 이용하여 URL을 분석한다.
  • URL 분석 결과를 통해 해당 URL에 매칭되는 View를 실행한다.
  • View는 자신의 로직을 실행하고, 데이터베이스 처리가 필요하면 Model을 통해 처리하고 그결과를 반환 받는다.
  • View는 자신의 로직 처리가 끝나면 Template을 사용하여 클라이언트에 전송할 HTML 파일을 생성한다.
  • View는 최종 결과로 HTML 파일을 클라이언트에게 보내 응답(Response)한다.

===> Django는 MTV Pattern으로 구조화 되어 있음.

 

 

Django 기본 환경 설정하기

- Pycharm 사용 

 

하나의 파이썬 인터프리터에 동일 라이브러리에 대해, 여러 버전을 동시에 설치할 수 없다.

즉, Django 1.8 version 과 Django 1.11 version을 같이 설치할 수 없다. 그렇기 때문에 여러개의 파이썬 프로젝트를 개발할 때에는 여러 버전을 쓸 수 밖에 없다. 또한 패키지 간의 버전 차이, 혹은 여러 가지 이유로 이들이 충돌할 수 있다. 

 

-  Django 1.8쓸 때에는 1.11을 삭제했다가, 1.11을 쓸 때에는 1.8을 삭제해야한다

-  그래서 나온것이 파이썬 가상 환경

 

 

1. 가상환경 만들기

가상환경이란 "파이썬 코드 상의 독립된 공간"을 의미한다. 파이썬에서 프로젝트를 진행할 때는 각각의 프로젝트 별로 가상환경을 만들어서 진행해 주는 것이 좋다. 특히 Django를 이용해서 웹 서버를 구축할때는 가상환경이 더더욱 필요하다. 

-  쉽게 말해서 사용자가 정한 임의의 디렉토리 밑에 파이썬과 관련된 패키지 등을 함께 넣어 그 안에서 독립적인 파이     썬 개발 환경을 구축하는 것이다. 

 

  • 파이썬 라이브러리를 설치할 수 있는 별도로 격리된 디렉토리 이다. 
  • 프로젝트 별로 생성된 디텍토리에 라이브러리를 격리해서 설치 한다. 

CMD(명령프롬프트)

  • [가상환경 생성] 명령어: python -m venv 가상환경 이름  

새 가상환경을 생성하기 위해서는 CMD(명령프롬프트)로 들어가서 가상환경을 만들 경로를 지정해 준다. 그 후 위 사진과 같이 명령어를 입력해 준다. 

 

"C드라이브 => Test_Server(폴더) => 가상환경이 생성 된것 

 

 

2. 가상환경 활성화

가상환경을 만들었다고 무조건 가상환경에서 작업을 하는 것은 아니다. 가상환경을 활성 시켜줘야 가상환경 안에서 작업이 가능하다. 

가상환경 활성화 명령어 입력 

  • [가상환경 활성화] 명령어: 가상환경이름\scripts\activate  

가상환경을 활성화 하기 위해서는 가상환경을 만들어 놓은 상위 디렉토리(파일)로 경로를 설정한 뒤 위 사진처럼 명령어를 입력한다. 

 

"C드라이브 => Test_Server(폴더) => 가상환경" <= 가상환경이 Test_Server(폴더) 안에 있기 때문에 Test_Server로 경로를 지정해 준 뒤 명령어를 입력해서 가상환경을 활성화 시키는 것 

 

가상환경 활성화

  • [설치된 패키지 목록 확인] 명령어: pip list  

가상환경을 활성화 하면 앞에 (myvenv)처럼 직접 설정한 가상환경의 이름이 표시된다. 이 표시가 가상환경에 들어왔다는 뜻이다. 그 후 pip list 명령어를 입력하면 현재 가상환경에 설치되어 있는 페키지들을 볼 수 있다. 새롭게 만든 가상환경에는 pip 등 아주 간단한 패키지들만 설치되어 있음을 확인할 수 있다. 가상환경을 만들면 이렇게 분명히 다른 장소에 저장되어 있는 패키지들을 가지고 작업을 진행한다. 그렇기 때문에 충돌 문제를 피할 수 있는 것 ! 

 

 

3. 패키지 설치 (Django install) 

Django install

  • [패키지 설치] 명령어: pip install 패키지 이름

현재 활성화된 가상환경에 Django 패키지를 설치 한다. 패키지를 설치할 때는 위 명령어를 입력해서 명령해 준다. 

그렇게 되면 가상환경에 Django 패키지가 성공적을 설치된 것을 확인할 수 있다. 

 

 

4. Django 프로젝트 생성

Django Project 생성

  • [Django 프로젝트 생성] 명령어: django-admin startproject 프로젝트 이름

해당 명령어를 입력하면 CMD 창에서는 아무런 변화가 없지만 프로젝트가 정상적으로 생성 된 것이다. 현재 "test_venv"라는 이름으로 프로젝트를 생성한 것 .

 

 

5. Pycharm으로 가상환경 활성화 하기

 

Pycharm

Pycharm(파이참)을 실행 시킨 후 Open을 눌러서 현재 생성한 Django 프로젝트를 열어 준다. 

가상환경이 아닌 Django 프로젝트를 Open 해줘야 한다. 

 

Pycharm

파이참으로 현재 생성한 Django 프로젝트를 열게 되면 기본적으로 설치되는 파일들이 정상적으로 설치되어 있는것을 확인할 수 있다. 하지만 현재 가상환경이 잡혀있지 않기 때문에 가상환경을 잡아 줘야 한다. 

왼쪽 상단에 "File => Settings.. => Project: 생성된 프로젝트 이름 => Python Interpreter" 로 접속한 후 사진상에 보이는 설정(톱니바퀴)을 누른 후 Add.. 를 클릭해서 Interpreter를 설정할 수 있는 곳으로 이동 한다. 

 

Pycharm

설정을 클릭 후 들어가면 위 사진상의 화면이 나오면서 가상환경을 설정하는 선택지가 나오는데 " Existing environment => ... "로 가상환경을 잡아준다. New environment 같은 경우 새로운 가상환경을 생성하는 부분이고 Existing environment 같은 경우 기존에 생성해 둔 가상환경을 활성화 하는 부분이다. 

 

Pycharm

위 사진을 보면 알 수 있듯이 "새로 생성한 가상환경 폴더(myvenv) => Scripts => python.exe" 로 경로를 설정한 후 ok 버튼을 누르면 끝이다.  

 

Pycharm

설정이 완료된 후 파이참 환경 하단에 "Terminal" 부분을 클릭해서 확인해 보면 가상환경에 접속되어 있는 것을 확인할 수 있다. 

 

 

Tip.

터미널 입력창에서 "python manage.py runserver"를 입력하면 서버가 구동되는 것을 확인할 수 있다.

 

 

참고.

https://tothefullest08.github.io/django/2019/02/11/django01/

 

Django 01 - Introduction, 동작원리, 기본설정 · 해리의 데브로그

Django 기본 설정은 cloud 기반의 웹서버를 대여해주는 c9 을 기반으로 작성되었습니다. Django를 사용하는 환경에 따라 기본 설정 방식이 조금씩 다를 수 있습니다.

tothefullest08.github.io

 

Comments