-
🤖 Django 웹 프레임워크프로그래밍/Django & Flask 2020. 10. 24. 13:59반응형
Django 웹 프레임워크
📌 일반적인 특징
MVC 패턴 기반 MTV - 장고에서는 View를 Template, Controller를 View라고 부른다. 객체 관계 매핑(Object-Relational Mapping) - 데이터베이스 시스템과 데이터 모델을 연결시키는 다리와 같은 역할 자동으로 구성되는 관리자 화면 - 장고는 웹 서버의 콘텐츠, 즉 데이터베이스에 대한 관리 기능을 위하여 프로젝트를 시작하는 시점에 기본 기능으로 관리자 화면을 제공 우아한 URL 설계 - 파이썬 프레임워크의 일반적인 우아한 URL 방식을 채택 자체 템플릿 시스템 - 내부적으로 확장이 가능하고 디자인이 쉬운 강력한 템플릿 시스템을 가지고 있다.
- 화면 디자인과 로직에 대한 코딩을 분리하여 독립적으로 개발 진행이 가능하다.캐시 시스템 - 캐시용 페이지를 메모리, 데이터베이스 내부, 파일 시스템 중 아무 곳에나 저장할 수 있다.
- 캐시 단위를 페이지에서부터 사이트 전체 또는 특정 뷰의 결과, 템플릿의 일부 영역만을 지정하여 저장해 둘 수도 있다.다국어 지원 - 장고는 동일한 소스코드를 다른 나라에서도 사용할 수 있도록 텍스트의 번역, 날짜/시간/숫자의 포맷, 타임존의 지정 등과 같은 다국어 환경을 제공한다. 풍부한 개발 환경 소스 변경사항 자동 반영 - .py 파일의 변경 여부를 감시하고 있다가 변겨잉 되면 실행 파일에 변경 내역을 바로 반영해준다.
- 테스트용 웹 서버를 실행 중인 상태에서 소스 파일을 수정할 경우에도 웹 서버를 다시 시작할 필요 없이 자동으로 새로운 파일이 반영된다.📌 Django 설치
cmd 창에 다음과 같이 입력
pip install Django 📌 장고에서의 애플리케이션 개발 방식
- 애플리케이션이란?
웹 사이트를 설계할 때 가장 먼저 해야 할 일은 프로그램이 해야 할 일을 적당한 크기로 나누어 모듈화 하는 것
이 경우, 웹 사이트의 전체 프로그램 또는 모듈화된 단위 프로그램을 애플리케이션이라고 한다.
프로젝트: 웹 사이트에 대한 프로그램
애플리케이션: 모듈화된 단위 프로그램
1) MTV 패턴
- MVC 패턴이란?
데이터(model), 사용자 인터페이스(view), 데이터를 처리하는 로직(controller)을 구분해서 설계하는 방식이다.
장고에서는 Model(데이터베이스에 저장되는 데이터), Template(사용자에게 보여지는 부분), View(실질적으로 프로그램 로직이 동작하여 데이터를 가져오고 적절하게 처리된 결과를 템플릿에 전달)
-
클라이언트로부터 요청을 받으면 URLconf 모듈을 이용하여 URL 분석
-
URL 분석 결과를 통해 해당 URL에 대한 처리를 담당할 뷰를 결정
-
뷰는 자신의 로직을 실행하면서, 만일 데이터베이스 처리가 필요하면 모델을 통해 처리하고 그 결과 반환
-
뷰는 자신의 로직 처리가 끝나면 템플릿을 사용하여 클라이언트에 전송할 HTML 파일을 생성
-
뷰는 최종결과로 HTML 파일을 클라이언트에게 보내 응답
2) Model - 데이터베이스 설계
- 모델이란?
사용될 데이터에 대한 정의를 담고 있는 장고의 클래스
하나의 모델 클래스는 하나의 테이블에 매핑되고, 모델 클래스의 속성은 테이블의 컬럼에 매핑된다.
데이터베이스에 대한 액세스를 SQL 없이도 클래스를 다루는 것처럼 할 수 있어서 편리하다.
SQLite3, MySQL 등 데이터 베이스 엔진을 변경하더라도 ORM을 통한 API는 변경할 필요가 없기 때문에 필요에 따라 데이터베이스 엔진을 훨씬 쉽게 변경할 수 있다 .
from django.db import models class Person(models.Model): first_name = models.CharField(max_length=30) last_name = models.CharField(max_length=30)
위의 파이썬 코드는 밑의 SQL문과 같다.
CREATE TABLE myapp_person( #테이블명은 애플리케이션명과 테이블 클래스명을 _로 연결 "id" serial NOT NULL PRIMARY KEY, # primary key는 장고에서 자동으로 부여 "first_name" varchar(30) NOT NULL, "last_name" varchar(30) NOT NULL );
3) Template - 화면 UI 설계
템플릿 파일은 *.html 확장자를 가지며, 장고의 템플릿 문법에 맞게 작성한다.
중요한 것은 템플릿 파일을 적절한 디렉토리에 위치시켜야 한다는 것이다.
장고에서 템플릿 파일을 찾을 때는 TEMPLATE_DIRS 및 INSTALLED_APPS에서 지정된 디렉토리를 검색한다. (setting.py 파일에 정의되어 있다)
4) URLconf - URL 설계
URL을 정의하기 위해서는 urls.py 파일에 URL과 처리함수(뷰)를 매핑하는 파이썬 코드를 작성해주면 된다. 이러한 URL/뷰 매핑을 URLconf라고 한다.
(정규표현식을 알아두면 좋다)
# django 1 문법, 3에서는 코드를 바꿔줘야 한다. from django.conf.urls import patters, url from . import views urlpatterns = patterns('', url(r'^articles/2003/$', views.special_case_2003), url(r'^articles/(\d{4})/$', views.year_archive), url(r'^articles/(\d{4})/(\d{2})/$', views.month_archive), url(r'^articles/(\d{4})/(\d{2})/(\d+)/$', views.artive_detail), )
5) View 로직 설계
뷰는 웹 요청을 받아서 데이터베이스 접속 등 해당 애플리케이션의 로직에 맞는 처리를 하고, 그 결과 데이터를 HTML로 변환하기 위하여 템플릿 처리를 한 후에, 최종 HTML로 된 응답 데이터를 웹 클라이언트로 반환하는 역할을 한다.
장고에서의 뷰는 함수 또는 클래스의 메소드로 작성되며, 웹 요청을 받고 응답을 반환해준다. 뷰는 보통 views.py 파일에 작성한다.
from django.http import HttpResponse import datetime def current_datetime(request): # 뷰함수는 httprequest 객체를 받는다. now = datetime.datetime.now() html = "<html><body>it is now %s. </body></html>" % now return HttpResponse(html) # 필요한 처리를 한 후에 httpresponse객체를 반환한다.
더보기출처: 장고로 배우는 쉽고 빠른 웹개발, 김석훈, 한빛미디어(2015)
반응형'프로그래밍 > Django & Flask' 카테고리의 다른 글
[Django] TypeError: __init__() missing 1 required positional argument: 'on_delete' (0) 2020.10.26 🤖 Django - 클래스형 뷰 (0) 2020.10.24 🤖 Django - Logging (0) 2020.10.24 [Django] Django 3에서 namespace의 사용 (0) 2020.10.23 🤖 웹 프로그래밍의 이해 (0) 2020.10.22 -