2010년 6월 7일 월요일

13. Web Application 제작

실제로 웹 상에서 서비스가 가능한 Web Application을 개발해 봅시다.

 

Learning Website Developement with Django(2008, Packt, 번역본 쉽고 빠른 웹 개발 Django, 인사이트)에서 사용된 예제를 인용하여 제작할 Web Application은 Bookmark Application입니다.

이 Application을 제작하면서 실제 웹 상에서의 서비스가 어떻게 이뤄지는 지 알아보도록 하겠습니다.

 

그리고 수업에 사용된 내용은 그대로 유지한 채 Application을 제작할 것이므로 기존 수업 내용에 추가하시면 될 것입니다.

Bookmark Application을 위해 models.py에 다음을 추가해주시기 바랍니다.

  1. models.py
  2. 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

 

이제 데이터 모델에 대한 기본적인 준비가 끝났으니 기능들을 하나씩 추가해 보도록 하겠습니다.

 

이 글은 스프링노트에서 작성되었습니다.

댓글 없음:

댓글 쓰기