[Django] Python 웹 개발 프레임워크 Develop Tip

파이썬이 Ruby나 Java 등에 비해 표준 웹 개발 프레임워크가 없는 관계로
MetaSpolit를 초기에 Python으로 개발한 Moor 아저씨가 나중에 Ruby로 갈아탄 이유이리라 본다.

각설하고 이번에 Django(쟁고라 읽더라구요)를 필요에 의해 해 보게 되었고,
그간 Python으로 로직을 개발하고 xml-rpc 서비스로 오픈하여 C#에서 작업하던 것에서
쟁고 프레임워크로 살펴볼 필요가 있었는데,
쟁고 홈페이지의 튜토리얼을 살펴보면서 작업하다가
한글등의 문제 해결을 하면서 했던 것을 기술해 보려고 한다.

1) 쟁고 개발 환경
OS: Ubuntu 10.10 Desktop

2) 쟁고 설치
$ sudo apt-get install python-django
$ dpkg -l | grep django
ii  python-django       1.2.3-1ubuntu0.1        High-level Python web development framework

현재 버전은 1.2.3 우분투 용임을 알 수 있음

연동할 DB는 mysql, sqlite, postgresssql, oracle 등이 있다.
mySQL과 연동한다고 가정하고 mysql server를 설치한다.
root 사용자와 암호는 pass 로 했다고 가정한다.


$ sudo apt-get install mysql-server
$ $ dpkg -l | grep mysql-server
ii  mysql-server      5.1.49-1ubuntu8.1        MySQL database server (metapackage depending on the latest version)
ii  mysql-server-5.1      5.1.49-1ubuntu8.1       MySQL database server binaries and system database setup
ii  mysql-server-core-5.1   5.1.49-1ubuntu8.1      MySQL database server binaries


3) 프로젝트 설치
$ django-admin startproject mysite
$ cd mysite
이후에는 모든 명령이 위의 디렉터리에서 진행된다고 가정.

4) 데이터베이스 생성
$ mysql -h localhost -uroot -ppass mysql
mysql> create database mysite default charset='utf8';
위에서 한글을 위하여 charset을 utf8로 설정함!

5) 환경 설정
$ vi settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'mysite',                      # Or path to database file if using sqlite3.
        'USER': 'root',                      # Not used with sqlite3.
        'PASSWORD': 'pass',                  # Not used with sqlite3.
        'HOST': 'localhost',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '3389',                      # Set to empty string for default. Not used with sqlite3.
    }
}
DATABASE_OPTIONS = {'charset': 'utf8'}
TIME_ZONE = 'Asia/Seoul'
LANGUAGE_CODE = 'ko-kr'

일단 데이터베이스를 위하여 위와 같이 설정.
아래의 charset utf8 은 한글을 위하여 설정!

6) app 생성
하나의 프로젝트 아래에 여러개의 모델을 갖는 app를 만들 수 있음.

$ ./manage.py startapp polls
$ vi polls/models.py
from django.db import models
import datetime
# Create your models here.
class Poll(models.Model):
    question = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')
    def __unicode__(self):
        return self.question
    def was_published_today(self):
        return self.pub_date.date() == datetime.date.today()
class Choice(models.Model):
    poll = models.ForeignKey(Poll)
    choice = models.CharField(max_length=200)
    votes = models.IntegerField()
    def __unicode__(self):
        return self.choice

위와 같이 설정 후,

$ ./manage.py syncdb
로 쟁고 및 app 모델 테이블이 자동으로 만들어 진다.
처음 만들 때, admin 사용자를 만든다고 하는데,
yes 하고 id, email, 암호를 넣는다.

$ ./manage.py sql polls 
또는 명령으로 DB 생성 SQL문을 만들 수도 있다.

7) 테스트 개발용 웹서버 기동
$ ./manage.py runserver
(위의 명령은 localhost에서만 접속을 허용하는데, 다른 서버에서도 들어오려면,
$ ./manage.py runserver 0.0.0.0:8000
과 같이 한다.)

8) 나머지 설정
$ vi settings.py
INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.admin',
    'polls',
)
위와 같이 installed app를 설정하고,

$ vi urls.py
from django.conf.urls.defaults import *
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
    (r'^admin/', include(admin.site.urls)),
)

위와 같이 url 설정 후,

$ vi polls/admin.py
from polls.models import Poll
from django.contrib import admin
admin.site.register(Poll)

위와 같은 admin 지정. (쟁고 1.0 이후)

9) 웹 접속
웹 브라우저에서 해당 호스트의 8000 포트로 admin 접속하면,

위에 admin 사용자 정보를 넣고,

Polls 로 접속을 하면,

(기존에 가나다? 한글 테스트 때문에 넣어 놓았었음) 오른쪽 상단의 추가를 눌러,

위와 같이 넣고 "저장"을 눌러,

여기까지 제대로 되었음을 알 수 있다.


일단 많은 것을 축약하였고, MVC 모델 등에 대해서도 skip을 하였는데,
더 자세한 것은 쟁고에 대한 다른 사이트를 참조한다.


덧글

  • 학생 2011/01/25 15:32 # 삭제 답글

    파이썬이란 언어를 몇일전부터 공부하고 있는 학생입니다.

    이런저런 파이썬 글을 탐독하고 있는데 파이썬 관련자료는 한국에는 많이 없는 것 같습니다.

    그런와중에 지훈현서아빠님의 블로그를 찾게되어 감사히 잘보고 있습니다.^^
  • 지훈현서아빠 2011/01/26 11:44 #

    제가 최근(근 이년)에 주로 사용하고 있는 언어가 파이썬 입니다.

    현재 우리나라 개발 환경의 경우 아이폰,안드로이드폰,윈7폰 등의 개발이나
    기존의 웹개발 또는 Flex(FlashBuilder4) 또는 Silverlight 등의 RIA 개발,
    가끔 MFC, DotNetFramework(C#, VB) 등을 이용한 CS(Client-Server) 프로그램 등이 있습니다.

    이런 환경에서는 파이썬을 사용하기가 쉽지 않죠.
    하지만 시스템(특히, *nix 시스템 등) Admin 이나 Google, NASA와 같이
    종합 시스템을 스스로 만들어내는 곳에서는 파이썬이 많이 사용되고 있다고 들었습니다.
    (파이썬을 만든 귀도반썸이라는 사람이 현재 구글 직원인 것을 보아도 그렇지요.)

    중요한 것은 어떤 도구(언어)를 이용하여 어느 적재 적소에 알맞게 사용할 수 있는가가 중요한 부분이라 생각합니다.
    부디 여러 가지 다양한 도구의 경험을 많이하시고 위와 같은 능력을 갖는 개발자 (소프트웨어 개발자)가 되시기를 바랍니다.

    한 이십년 더 이 분야에 살아남아 40년은 개발을 할까하는 개발자의 선배로 감히 말씀드립니다.
    ^^
  • 2014/10/23 14:44 # 삭제 답글 비공개

    비공개 덧글입니다.
댓글 입력 영역

구글애드텍스트