사용자 도구

사이트 도구


develop:python:webframework:django

Django

Install Django

데비안 패키지가 없기 때문에 직접 소스를 다운로드 받아서 설치한다.

# cd /usr/local/src
# wget http://www.djangoproject.com/download/0.95/tarball/
# tar xzvf Django-0.95.tar.gz
# cd Django-0.95
# python setup.py install

장고 프로젝트 생성

# cd /path/to/workspace
# django-admin.py startproject projectname

위와 같이 프로젝트를 생성하면 /path/to/workspace/projectname 에 프로젝트가 자동으로 생성된다. 해당 디렉토리 밑에는 다은과 같은 파일이 존재한다.

projectname/
    __init__.py
    manage.py
    settings.py
    urls.py

개발용 장고서버 실행

# cd /path/to/workspace/projectname
# python manage.py runserver 0.0.0.0:8000
Validating models...
0 errors found.

Django version 0.95, using settings 'www.settings'
Development server is running at http://0.0.0.0:8000/
Quit the server with CONTROL-C.

위와 같이 실행하면 장고 웹서버가 실행이 된 것이다. 웹브라우저에서 http:아이피주소:8000/ 로 연결할 수 있다. 개발을 위해서 간단하게 실행할 수 있으며, 실제 운영에서는 Apache + mod_python 과 연동하여 사용하게 될 것이다. 그러니, Control-C 를 눌러서 서버를 멈추도록 하자. ===== 장고 DB 설정 ===== 프로젝트에서 사용할 DB 를 설정하려면 projectname 에 자동으로 생성된 settings.py 의 DB관련 내용을 수정하면 된다. 현재는 postgresql, mysql, sqlite 를 지원하고 있으며, 앞으로 더 많은 DB 를 지원할 예정이다. 필자는 postgresql 을 좋아하므로 아래와 같이 설정하였다. <code> # vi settings.py DATABASE_ENGINE = 'postgresql' DATABASE_NAME = '디비이름' DATABASE_USER = '아이디' DATABASE_PASSWORD = '비밀번호' DATABASE_HOST = 'localhost' DATABASE_PORT = '5432' </code> ===== INSTALLED_APPS 설정 ===== settings.py 내용 중 INSTALLED_APPS 이 있는데 이 안에는 4가지 Application이 포함되어 있다. 이 Application을 사용하려면 DB 에 테이블을 생성해야 한다. * django.contrib.auth * django.contrib.contenttypes * django.contrib.sessions * django.contrib.sites 다음과 같이 테이블을 생성한다. <code> # python manage.py syncdb Creating table auth_message Creating table auth_group Creating table auth_user Creating table auth_permission Creating many-to-many tables for Group model Creating many-to-many tables for User model Creating table django_content_type Creating table django_session Creating table django_site You just installed Django's auth system, which means you don't have any superusers defined. Would you like to create one now? (yes/no): Please enter either “yes” or “no”: yes Username (Leave blank to use 'root'): E-mail address: mattabu@eec.co.kr Password: openwatcher Password (again): openwatcher Superuser created successfully. Adding permission 'message | Can add message' Adding permission 'message | Can change message' Adding permission 'message | Can delete message' Adding permission 'group | Can add group' … </code> 다음과 같이 DB 에 테이블이 생성된 것을 확인할 수 있다. <code> # psql -d 디비이름 -U 아이디 -W Password: Welcome to psql 7.4.7, the PostgreSQL interactive terminal. Type: \copyright for distribution terms \h for help with SQL commands \? for help on internal slash commands \g or terminate with semicolon to execute query \q to quit openwatcher⇒ \dt List of relations Schema | Name | Type | Owner ——–+—————————-+——-+————- public | auth_group | table | openwatcher public | auth_group_permissions | table | openwatcher public | auth_message | table | openwatcher public | auth_permission | table | openwatcher public | auth_user | table | openwatcher public | auth_user_groups | table | openwatcher public | auth_user_user_permissions | table | openwatcher public | django_content_type | table | openwatcher public | django_session | table | openwatcher public | django_site | table | openwatcher (10 rows) openwatcher⇒ </code> ===== Admin 사이트 활성화 ===== * INSTALLED_APPS 에 “django.contrib.admin”를 추가한다. * python manage.py syncdb를 실행한다. INSTALLED_APPS라는 새로운 application을 추가하였으므로 관련 DB 테이블들이 생성될 것이다.. * mysite/urls.py 파일을 열어서 “Uncomment this for admin:” 밑에 있는 것의 주석을 풀어준다. 이제, 개발서버를 다시 실행시키고, 웹브라우저에서 http:아이피주소:8000/admin/ 로 접근하면 로그인 페이지를 볼 수 있다.

Apache, mod_python 연동

Install Apache, mod_python

# apt-get install apache2 libapache2-mod-python

Configure apache

# vi /etc/apache2/sites-enabled/000-default
NameVirtualHost 아이피주소:포트
<VirtualHost 아이피주소:포트>
    ServerName 도메인
    DocumentRoot /path/to/workspace/projectname/

    <Location "/">
        SetHandler python-program
        PythonHandler django.core.handlers.modpython
        PythonPath "['/path/to/workspace'] + sys.path"
        SetEnv DJANGO_SETTINGS_MODULE projectname.settings
        PythonInterpreter projectname

        PythonDebug On
        PythonAutoReload On
    </Location>

    <LocationMatch "\.(jpg|gif|png)$">
        SetHandler None
    </LocationMatch>

    <Location "/media/">
        SetHandler None
    </Location>
</VirtualHost>

Apache 와 연동하면 admin 사이트의 CSS 가 적용이 되지 않는다. admin 사이트의 CSS 적용을 하려면 다음과 같이 링크를 걸어준다.

# cd /path/to/workspace/projectname
# ln -s /usr/lib/python2.3/site-packages/Django-0.95-py2.3.egg/django/contrib/admin/media media

우분투 리눅스에서는 python 2.4 가 기본으로 설치되어 있으므로 다음과 같이 해주어야 한다.

# cd /path/to/workspace/projectname
# ln -s /usr/lib/python2.4/site-packages/Django-0.95-py2.4.egg/django/contrib/admin/media media
develop/python/webframework/django.txt · 마지막으로 수정됨: 2007/02/06 15:01 저자 mattabu