Django 웹 프레임워크
아래 내용은 파이썬 웹프로그래밍(한빛출판사) 책의 내용을 정리한 것입니다.
일반적인 특징
- MTV 패턴 기반
- Template: 데이터를 사용자에게 보여주는 컴포넌트 (MVC에서의 View)
- View: 데이터를 가져와 변형하는 컴포넌트 (MVC에서의 Controller)
- 객체 관계 매핑
- ORM 기능 제공
- 자동으로 구성되는 관리자 화면
- 데이터베이스 관리를 할 수 있는 관리자 화면을 자동을 만들어준다.
- 우아한 URL 설계
- 자체 템플릿 시스템
- 확장이 가능하고 디자인이 쉬운 템플릿 시스템 제공
- 화면 디자인과 로직에 대한 코딩을 분리하여 개발 가능
- 캐시 시스템
- 캐시용 페이지를 메모리, DB, 파일 시스템에 저장 가능
- 캐시 단위로는 페이지, 사이트 전체, 특정 뷰의 결과, 템플릿 일부 등으로 지정 가능
- 다국어 지원
- 텍스트의 번역, 날짜/시간/숫자 포맷, 타임존의 지정등고 ㅏ같은 다국어 환경 제공
- 풍부한 개발 환경
- 테스트 용 웹 서버 포함
- 디버깅 모드 제공
- 소스 변경사항 자동 반영
- *.py 파일의 변경사항을 자동으로 반영
Django 설치
$ pip3 install django
$ python3
>>> import django
>>> print(django.get_version())
1.8.4
Django 에서의 개발
MTV 패턴
Model
모델은 사용될 데이터에 대한 정의를 담고 있는 클래스이다.
모델 클래스는 models.py 파일에 정의한다.
from django.db import models
class Person(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
Person 클래스는 내부적으로 다음과 같은 SQL문으로 테이블을 생성한다.
CREATE TABLE myapp_person {
"id" serial NOT NULL PRIMARY KEY,
"first_name" varchar(30) NOT NULL,
"last_name" varchar(30) NOT NULL
};
장고에서 테이블 및 컬럼을 자동으로 생성하기 위한 아래와 같은 몇가지 규칙이 존재한다.
- 테이블명은 애플리케이션과 테이블 클래스명을 '_'로 연결, 모두 소문자로 표시한다.
- Primary Key는 Person 클래스에서 정의하지 않아도 자동으로 부여한다.
Template
장고는 자체 템플릿 시스템을 가지고 있으며, 이는 쉬운 문법을 제공하여 디자이너와 개발자 간에 효율적인 협업을 가능케한다. 템플릿 파일은 *.html 확장자를 가지며, settings.py 파일에 정의되어 있는 TEMPLATE_DIRS 및 INSTALLED_APPS 에 지정된 위치에서 템플릿 파일을 검색한다.
INSTALLED_APPS = {
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'polls'
)
TEMPLATE_DIRS = ['/hom/shkim/pyBook/ch3/templates']
URLconf - URL 설계
URL 정의를 위해서는 urls.py 파일에 URL과 처리 함수를 매핑하는 파이썬 코드를 작성한다. 이러한 URL/뷰 매핑을 URLconf 라고 한다.
from django.conf.urls immport patterns, url
from . import views
urlpatterns = patterns('',
url(r'^articles/2003/