[uscript] 3장. Model을 만들자
모델을 만들어 보자.
MVC 에서 보통 Model View Controller 라고 얘기하는데 django 에서는 Model View Template 이라고 많이 쓴다. MVC에서 Control에 해당되는게 django에서는 View 이다.
그리고 View(화면)으로 얘기하는 부분이 템플릿에 해당한다.
모델은 데이터를 담아두는 공간으로 데이터베이스에서는 테이블에 해당된다.
django 에서는 모델을 클래스로 정의하여 database api를 통해 모델과 연동이 된다.
즉, 따로 데이터베이스 설계를 하지 않고 모델을 정의해서 데이터베이스에 대한 상세한 내용을 알지 못해도 구현이 가능하다.
모델은 django.db의 models로 구현이 된다.
아래를 import 하자
from django.db import models
import datetime
from django.utils import timezone
from django.contrib.auth.models import User
django의 모델을 사용하기 위해서 models와 사용자 객체를 이용하기 위한 User를 import 해야 한다.
스크립트 관리자의 모델은 아래와 같이 정의한다.
class Scripts(models.Model):
title = models.CharField('Title',max_length=200)
contents = models.TextField()
pub_date = models.DateTimeField('PubDate',default=timezone.now())
user=models.ForeignKey(User)
models 에 있는 Model 부모객체를 상속받아 Scripts라고 이름을 정하였다.
앞에서 설정한 syncdb 명령을 내리면 scripts 테이블이 생성된다.
$ manage.py sql scripts
명령을 내리면 테이블이 생성되는 스크립트를 볼 수 있다.
필드는 models 에 정의된 CharField, TextField, DateTimeField를 정의하였다.
CharField는 보통 텍스트박스에 들어갈 필드를 정의하고 TextField는 TextArea에 들어갈 장문의 글을 저장할 때 사용한다. DateTimeField는 날짜를 지정할 수 있고 기본 값으로 현재시간이 들어가도록 정의하였다. 그리고 작성자를 반드시 등록하도록 user 를 django의 User 모델을 사용하였다.
class Tag(models.Model):
tag_title = models.CharField('Tag',max_length=100)
scripts = models.ManyToManyField(Scripts)
태그도 마찬가지로 정의해보자.
태그는 스크립트와 관련이 있어 Scripts 모델과 다대다 관계를 설정하였다.
하나의 태그에 여러 스크립트가 연결이 될 수 있고, 한 스크립트에 여러 태그를 달 수 있기 때문에 다음과 같이 정의한다.
그러면 django에서는 N:M의 테이블을 1:N의 2개 테이블을 생성하여 관계를 표시해준다.
데이터베이스에 대해서 조금은 알아야하지만 개발을 하는 입장에서는 크게 신경을 쓰지 않아도 django framework에서 많은 부분을 해결해준다.
모델과 필드에 대해서 좀더 설명을 하는게 좋겠지만 긴 설명이 될 수 있어 여기까지로 정리하고 다음에는 url을 지정하고 화면에 보여주는 방법에 대해서 알아본다.
MVC 에서 보통 Model View Controller 라고 얘기하는데 django 에서는 Model View Template 이라고 많이 쓴다. MVC에서 Control에 해당되는게 django에서는 View 이다.
그리고 View(화면)으로 얘기하는 부분이 템플릿에 해당한다.
모델은 데이터를 담아두는 공간으로 데이터베이스에서는 테이블에 해당된다.
django 에서는 모델을 클래스로 정의하여 database api를 통해 모델과 연동이 된다.
즉, 따로 데이터베이스 설계를 하지 않고 모델을 정의해서 데이터베이스에 대한 상세한 내용을 알지 못해도 구현이 가능하다.
모델은 django.db의 models로 구현이 된다.
아래를 import 하자
from django.db import models
import datetime
from django.utils import timezone
from django.contrib.auth.models import User
django의 모델을 사용하기 위해서 models와 사용자 객체를 이용하기 위한 User를 import 해야 한다.
스크립트 관리자의 모델은 아래와 같이 정의한다.
class Scripts(models.Model):
title = models.CharField('Title',max_length=200)
contents = models.TextField()
pub_date = models.DateTimeField('PubDate',default=timezone.now())
user=models.ForeignKey(User)
models 에 있는 Model 부모객체를 상속받아 Scripts라고 이름을 정하였다.
앞에서 설정한 syncdb 명령을 내리면 scripts 테이블이 생성된다.
$ manage.py sql scripts
명령을 내리면 테이블이 생성되는 스크립트를 볼 수 있다.
필드는 models 에 정의된 CharField, TextField, DateTimeField를 정의하였다.
CharField는 보통 텍스트박스에 들어갈 필드를 정의하고 TextField는 TextArea에 들어갈 장문의 글을 저장할 때 사용한다. DateTimeField는 날짜를 지정할 수 있고 기본 값으로 현재시간이 들어가도록 정의하였다. 그리고 작성자를 반드시 등록하도록 user 를 django의 User 모델을 사용하였다.
class Tag(models.Model):
tag_title = models.CharField('Tag',max_length=100)
scripts = models.ManyToManyField(Scripts)
태그도 마찬가지로 정의해보자.
태그는 스크립트와 관련이 있어 Scripts 모델과 다대다 관계를 설정하였다.
하나의 태그에 여러 스크립트가 연결이 될 수 있고, 한 스크립트에 여러 태그를 달 수 있기 때문에 다음과 같이 정의한다.
그러면 django에서는 N:M의 테이블을 1:N의 2개 테이블을 생성하여 관계를 표시해준다.
데이터베이스에 대해서 조금은 알아야하지만 개발을 하는 입장에서는 크게 신경을 쓰지 않아도 django framework에서 많은 부분을 해결해준다.
모델과 필드에 대해서 좀더 설명을 하는게 좋겠지만 긴 설명이 될 수 있어 여기까지로 정리하고 다음에는 url을 지정하고 화면에 보여주는 방법에 대해서 알아본다.
댓글
댓글 쓰기