Django를 알아보자 ! 😎

1

DJANGO

목록 보기
3/9
post-thumbnail

출처 :


1. DJANGO 란? 🤔

Django는 웹 사이트를 보다 신속하고 유지보수가 편리하게 구현하기 위해 도움을 주는 파이썬 웹 프레임워크입니다. 웹 개발을 하는데 굉장히 유용한 기능들을 다수 보유하고 있으며, 이 프레임워크를 이용하여 보다 앱 개발에 집중할 수 있게 되고, 어떤 운영체재(리눅스,맥,윈도우 등)에서든 작동 할수 있죠.

잠깐 ! 프레인워크와 라이브러리의 차이점 🔔

저는 프레임워크가 개발에 필요한 다양한 기능들을 제공한다는 점에서 라이브러리와 헷갈렸는데, 이 둘의 차이는 이 툴의 사용자가 흐름을 제어하냐 못하냐의 차이인것 같습니다. 예를 들어서, 제가 라이브러리를 사용할 때, 해당 라이브러리를 제 기능 어디에 적용할지 정할 수 있는 반면, 장고 같은 프레임워크는 사용자가 이미 만들어진 환경에 맞추어서 코드를 집어넣어야되죠. 도구는 저희가 다룰수 있지만, 환경은 다룰 수 없듯이요 !

2. DJANGO의 작동 흐름 🌊

흐름 이해

  1. 장고는 클라이언트에서 HTTP 요청이 들어오면, URL을 판별하여 어떤 뷰(view)가 요청을 처리할지를 안내합니다.
  2. 해당 URL를 처리할 뷰(view)를 만약 준비해두었다면, 그 뷰가 HTTP 요청을 받고 데이터베이스에 접근이 필요하다면 실행하고, 해당 요청에 대한 HTTP 응답을 반환한하는 함수를 구현할 수 있습니다.
  3. Models.py 파일은 데이터베이스의 구조를 정의하고, 데이터베이스의 기록을 관리(C.R.U.D)하고 쿼리하는 방법을 제공하는 파이썬 객체입니다. 해당 파일을 Views.py에서 import하여, 데이터 베이스 관련 로직을 처리합니다.
  4. Template는 실제 브라우저에서 보여주는 화면의 구조와 레이아웃을 정의하고, 렌더링하는 곳입니다. (ex:HTML 파일) 하지만, 백엔드를 공부하는 저는 이 파일을 사용하지 않고, 프론트에게 맡기겠습니다. ㅎㅎ ... 😗

MVC 패턴과 많이 유사

MVC 패턴이란?

사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다. MVC에서 모델은 애플리케이션의 정보(데이터)를 나타내며, 뷰는 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소를 나타내고, 컨트롤러는 데이터와 비즈니스 로직 사이의 상호동작을 관리한다.


장고의 MVT (Model-View-Template) 패턴

  • Model : 똑같이 어플리케이션의 정보를 나타낸다.
  • View : 컨트롤러와 같이 데이터와의 비즈니스 로직 사이의 상호동작 관리
  • Templete : MVC 패턴의 View 처럼 사용자 인터페이스를 구성

위와 같이 서로의 영향 없이 고칠수도 있기 때문에 더 집중할 수 도 있으며 유지보슈면에서도 용이하다고 한다.

3. DJANGO 파일 트리 이해 🎄

빠른 설치 가이드와 프로젝트 폴더 생성은 아래의 링크를 클릭 ! 👇
https://docs.djangoproject.com/ko/3.1/intro/install/

위의 링크의 가이드대로 설치를 할 시, 다음과 같은 프로젝트 트리가 생성된다.

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py

파일에 대해 소개를 하자면,

  • manage.py : 프로젝트를 다양한 방법으로 관리할 수 잇는 커맨드라인 유틸리티이다. 예를 들어서, python3 manage.py runserver를 치면 장고가 기본적으로 제공하는 테스트 웹 서버를 가동 시킬 수 있다. 이 외에도 여러가지 기능들을 내포하고 있다.
  • mysite 다이렉토리 : 프로젝트 하나를 파면, 해당 프로젝트와 같은 이름의 다이렉토리가 생성된다. 이 다이렉토리 내부에 있는 파일들을 수정하여, 프로젝트를 위한 python 파일들을 모아두었다.
  • mysite/init.py : 흠.. 그냥 빈파일이다... 딱히 쓰임새는 없는것 같다.
  • mysite/settings.py : 프로젝트의 환경 및 구성을 담당하는 파일이다.
  • mysite/urls.py : 처음 url을 받았을때 처리하는 python 파일이다. 해당 url을 어떤 view가 담당할 지 설정할 수 있다.
  • mysite/wsgi : 파이썬 어플리케이션이 웹 서버와 통신하기 위한 인터페이스를 정의한 파일이다. (Web-Server-Gateway-Interface)

여기서 ```python manage.py startapp app_name``` 이렇게 명령어를 입력하면, 앱 하나를 만들 수 있고, 이 app이 __프로젝트의 전체 프로그램를 구분짓는 단위__ 라고 나는 생각한다. 즉, 이 앱에서 어플리케이션을 코딩하면 되는 것이고, 서비스의 구성요소 중 큰 단위를 가지는 것 (예를 들어, 유저 / 상품) 같은 것을 관리할 때 구분지어 놓을 수 있기 때문에 용이하다.
polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py

그래서 위의 해당 앱을 관리하는 파일 트리가 다음과 같이 생성된다. 여기서 migrations는 models.py에서 정의한 테이블이 적용되는 것을 기록하는 파일이며, views.py가 이 앱에서 어떤 로직으로 url 요청이 왔을 때 처리할 것인가를 판단한다.

4. 그 외 ...

  • admin (관리자) 기능 기본으로 제공
    - settings.py 에 가보면 기본적으로 설치되는 기능들 중 admin 이름이 들어간 앱을 확인 할 수 있다.
  • 사용자 인증 및 권한 시스템이 있다고 하는데 어떻게 확인하지 ? 의문이다. 🤔
  • 데이터 직렬화 (Json 혹은 XML)

-끝- 🌈

profile
# 개발 # 컴퓨터공학

0개의 댓글