실제로 웹 상에서 서비스가 가능한 Web Application을 개발해 봅시다.
Learning Website Developement with Django(2008, Packt, 번역본 쉽고 빠른 웹 개발 Django, 인사이트)에서 사용된 예제를 인용하여 제작할 Web Application은 Bookmark Application입니다.
이 Application을 제작하면서 실제 웹 상에서의 서비스가 어떻게 이뤄지는 지 알아보도록 하겠습니다.
그리고 수업에 사용된 내용은 그대로 유지한 채 Application을 제작할 것이므로 기존 수업 내용에 추가하시면 될 것입니다.
Bookmark Application을 위해 models.py에 다음을 추가해주시기 바랍니다.
- models.py
- class Link(models.Model):
url = models.URLField(unique=True)
def __unicode__(self):
return self.url
class Bookmark(models.Model):
title = models.CharField(max_length=200)
user = models.ForeignKey(User)
link = models.ForeignKey(Link)
def __unicode__(self):
return '%s, %s' % (self.user.username, self.link.url)
class Tag(models.Model):
name = models.CharField(max_length=64, unique=True)
bookmarks = models.ManyToManyField(Bookmark)
def __unicode__(self):
return self.name
작성후 실제 생성되어 작동하는 sql문을 출력해 봅시다.
> python manage.py sqlall myTest
BEGIN;
...
CREATE TABLE "myTest_link" (
"id" integer NOT NULL PRIMARY KEY,
"url" varchar(200) NOT NULL UNIQUE
)
;
CREATE TABLE "myTest_bookmark" (
"id" integer NOT NULL PRIMARY KEY,
"title" varchar(200) NOT NULL,
"user_id" integer NOT NULL REFERENCES "auth_user" ("id"),
"link_id" integer NOT NULL REFERENCES "myTest_link" ("id")
)
;
CREATE TABLE "myTest_tag" (
"id" integer NOT NULL PRIMARY KEY,
"name" varchar(64) NOT NULL UNIQUE
)
;
CREATE TABLE "myTest_tag_bookmarks" (
"id" integer NOT NULL PRIMARY KEY,
"tag_id" integer NOT NULL REFERENCES "myTest_tag" ("id"),
"bookmark_id" integer NOT NULL REFERENCES "myTest_bookmark" ("id"),
UNIQUE ("tag_id", "bookmark_id")
)
;
CREATE INDEX "myTest_bookmark_user_id" ON "myTest_bookmark" ("user_id");
CREATE INDEX "myTest_bookmark_link_id" ON "myTest_bookmark" ("link_id");
...
COMMIT;
Tag 데이터 모델에 ManyToManyField가 적용되어 myTest_tag_bookmarks 라는 우리가 생성하지 않았던 테이블이 생성됨을 확인할 수 있습니다. (참고 : Insert, Update, Delete)
이제 위의 데이터 모델을 적용해 봅시다.
> python manage.py syncdb
이제 데이터 모델에 대한 기본적인 준비가 끝났으니 기능들을 하나씩 추가해 보도록 하겠습니다.
이 글은 스프링노트에서 작성되었습니다.
댓글 없음:
댓글 쓰기