2009-07-29

일반 어플리케이션 개발에 장고 프레임웍 이용하기

웹 게임의 서버를 만들던 중 너무나 많은 쿼리문 때문에 복잡해서 장고 프레임 웍의 DB모델 같은 걸 구현 할 수 있을지 고민하게 되었다. 처음에는 장고의 DB모델을 분석해서 비슷하게 구현하려고 생각했는데 분석해 보니 의외로 쉽게 그냥 가져다 쓸 수 있을 것 같았다.

장고가 깔린 디렉토리를 살펴보면 '/usr/local/lib/python2.6/dist-packages/django/core/management/commands'이란 폴더가 있는데 여기에 어떤 파이썬 스크립트를 구현해 놓으면 manage.py를 통해서 실행 할 수 있다. 그 중에 가장 간단한 shell.py를 가져와서 아래와 같이 고쳐서 myapp.py를 만들어 보았다. 만들 때 주의 할 점은 이 폴더가 루트 권한이 필요하다는 것이다.

from django.core.management.base import NoArgsCommand
class Command(NoArgsCommand):
def handle_noargs(self, **options):
from nahaha.main import run
run()

그리고 장고를 아시는 분은 다 아시듯이 프로젝트를 생성한다.
$ django-admin.py startproject myapp
$ cd myapp
$ python manage.py startapp nahaha

이제 settings.py를 아래와 설정한다.
DATABASE_ENGINE = 'sqlite3'
DATABASE_NAME = 'myappdb'
INSTALLED_APPS 에 'myapp.nahaha'를 추가

그 후 nahaha폴더에 models.py를 아래와 같이 만든다.

from django.db import models
class Person(models.Model):
name = models.CharField(max_length=64, unique=True)

그리고 nahaha폴더에 main.py파일을 아래와 같이 만든다.

# -*- coding: utf-8 -*-
from nahaha.models import Person
def run():
if len(Person.objects.all()) == 0:
person1 = Person(name='오호라')
person1.save()
person2 = Person(name='나하하')
person2.save()
for person in Person.objects.all():
print person.name
print 'It worked!'

이제 장고를 통해서 우리가 만든 어플리케이션을 실행시켜 보자. 이렇게!
$ python manage.py syncdb
$ python manage.py myapp
오호라
나하하
It worked!

야호~ 잘 된다. 한글도 잘 나온다. ^^
이제 리펙토링의 세계로 고고싱~~

댓글 없음:

댓글 쓰기