Django 1

조한림·2020년 1월 28일
0

Django

목록 보기
1/3

Django란 무엇인가

Django는 파이썬으로 만들어진 무료 오픈소스 웹 애플리케이션 프레임워크 이다.
쉽고 빠르게 웹사이트를 개발할 수 있도록 돕는 구성요소로 이루어져 있다.

왜 프레임워크가 필요한가?

프레임워크는 구조화된 스크립트를 통해 개발자들의 스크립트 패턴을 정형화 하여 개발자가 반복 수행해야 하는 공통 부분들을 미리 구성해놓은것.
이를 통해 개발자는 자신이 맡은 세부 업무에 더욱 집중 할 수 있으며 개발표준 준수 및 개발 품질 향상에 도움을 준다.

프레임워크의 장점?
  • 체계적인 코드관리로 유지보수 용이
  • 기본 설계기능 및 라이브러리를 제공하여 개발 생산성이 높다
  • 코드에 대한 재사용성이 높다
  • 추상화된 코드를 사용해 확장성이 높다.
프레임워크의 단점?
  • 학습 난이도가 높다
  • 기본 설계된 구조가 있어 자유로운 개발이 어렵다.
  • 사용하지 않는 기술의 라이브러리가 포함되어 불필요한 부분이 있을 수 있다.
  • 제공되는 기능만큼 프로젝트의 용량이 증가한다.

Django의 MTV패턴

웹프로그램 개발시 일반적으로 언급되는 패턴은 MVC(Model-View-Controller)패턴이다.
여기서의 모델은 데이터, 뷰는 사용자 인터페이스, 컨트롤러는 데이터를 처리하는 로직이다. 이 세가지를 구분하여 한 요소가 다른 요소에 영향을 주지 않도록 개발하는 패턴이 MVC패턴 이다.
파이썬도 이런 방식을 받아 들였지만 용어가 조금 다를뿐이다.

장고 프레임워크 에서는 데이터를 Model, 뷰를 Template, 컨트롤러를 View라고 표현하며 MTV패턴 이라고 한다.

위의 그림을 보자
1. 먼저 클라이언트로 부터 요청을 받으면 URLconf모듈을 이용하여 URL을 분석한다.
2. URL분석 결과를 통해 해당 URL과 매칭되는 View들을 실행한다,
3. 뷰는 자신의 로직을 실행하고 데이터베이스가 필요하면 Model을 통해 처리하고 그결과를 받는다.
4. View는 자신의 로직 처리가 끝나면 Template을 사용하여 클라이언트에 전송할 html파일을 생성한다.
5. View는 최종결과로 html파일을 클라이언트에게 보내서 응답한다.

1. Model

모델이란 애플리케이션에서 사용될 데이터에 대한 정의를 담고 있는 장고의 클래스 이다.
장고는 ORM기법을 활용하여 데이터베이스를 클래스로 매핑하여 사용할 수 있다.
즉 하나의 모델클래스는 데이터베이스의 하나의 테이블이고 모델 클래스의 변수는 테이블의 컬럼에 매핑 된다.

Django ORM???

Object-Relations Mapping의 약자로 객체와 관계형 데이터베이스를 연결해주는 역할을 한다.
기존의 웹프로그래밍을 할때에는 직접 데이터베이스에 접근하여 SQL문을 통하여 데이터 베이스를 조작했기 때문에 개발자들은 당연히 SQL문과 접근하는 방법들을 알고 있어야 했다.
하지만 ORM에서는 데이터 베이스 대신 객체를 통해 데이터를 관리하고 객체를 대상으로 필요한 작업을 실행하면 ORM이 적절한 SQL구문이나 데이터베이스 API를 호출하여 처리한다.

굉장히 강력한기능으로 Django를 쓰는 사람들은 이것때문에 Django를 사용한다고 말하는 사람도 있다.


from django.db import models

class Person(models.Model):
  first_name = models.CharField(max_length=30)
  last_name = models.CharField(max_length=30)

위의 예를 보면 Person이라는 테이블안에 first_name이라는 값과 last_name이라는 값의 컬럼이 생성되었고 최대 길이는 30이라는 코드가 입력되어있다.
이것을 SQL문으로 만들면


CREATE TABLE myapp_person(
	"id" serial NOT NULL PRIMARY KEY,
  	"first_name" varchar(30) NOT NULL,
  	"last_name" varchar(30) NOT NULL
)

이라는 SQL문과 같은 의미이다.
이렇게 django는 Model을 가지고 직관적인 ORM을 통해 SQL문을 쓰지 않고도 데이터베이스에 접근하여 작업을 수행 할 수 있다.

2. Template

Django는 웹 프레임워크 이기 때문에 HTML을 동적으로 생성하는 편리한 방법이 필요하다,
템플릿에는 HTML에 원하는 정적부분과 동적 내용이 삽입되는 방법을 가진 특수구문이 포함되어 있다.
Django는 자체 템플릿 시스템을 가지고 있기 때문에 디자이너도 쉽게 이해할 수 있는 문법을 제공한다.
이 자체 템플릿 시스템을 jinja 템플릿 이라고 부르며 파이썬 코드를 그대로 사용할 수 있다는 장점이 있다.

3. View

먼저 URL에 대해서 알 필요가 있다.
파이썬 URL을 지정하기 위서는 url과 처리함수를 매핑 하면되는데, 이때 처리함수는 view에 저장되어 있는 함수를 말하므로 이 모든 동작을
URLconf라고 부른다.

예를 들면

# urls.py
from django.urls import path
from . import views

urlpatterns = [
	path('articles/2003/', views.special_case_2003),
  	path('articles/<int:year>/', views.year_archive),
  	path('articles/<int:year>/<int:month>/<slug:slug>/', views.article_detail),
]
# views.py
from django.http import HttpResponseRedirect

def special_case_2003(request):
  return HttpResponse('hi')

위 코드의 urlpatterns중 첫번째는

www.django.com/articles/2003/ 를 요청하고 이는 views.py에 special_case_2003이라는 함수로 저장되어 있어 이 함수 안에 있는 것들을 템플릿으로 보내주는 동작을 한다.

위의 view파일에 hi 라는 http리스폰스 리턴을 줫으므로 화면에서는 hi라는 문자를 볼 수 있다.

일반적으로 View는 웹 요청(request)를 받아서 데이터 베이스 접속등 해당 애플리케이션에 맞는 로직을 처리 하고 , 이를 html로 변환을 한후, 최종 html을 클라이언트로 반환하는 동작까지 한다.

reference

Django를 활용한 쉽고 빠른 웹개발 파이썬 웹 프로그래밍 저:김석훈

profile
안녕하세요

0개의 댓글