PythonフレームワークDjangoをインストールしてみた

今回はやらないけど、最終的にはGoogle App Engineで何か動かしたい。
 

PythonフレームワークDjangoをインストール

Pythonのバージョンが2.4の場合は多分これでいい。
CentOSの場合、Yumのせいで2.4がデフォルトになってるはず。

yum -y install python-setuptools
easy_install django

 
今回入れたいのは2.6。

cd /tmp
wget http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11-py2.6.egg#md5=bfa92100bd772d5a213eedd356d64086
sh setuptools-0.6c11-py2.6.egg
easy_install django
easy_install mysql-python
easy_install pysqlite

 
Python Package Index : setuptools 0.6c11
http://pypi.python.org/pypi/setuptools
 

キャッシュディレクトリ設定

デフォルトは /var/www/.python-eggs になってた。

mkdir /var/www/.python-eggs
chown apache:apache /var/www/.python-eggs

 
変更する場合は.htaccessで設定する

SetEnv PYTHON_EGG_CACHE /tmp

 

Yumだけ2.4にする

もうYumのせいで2.4がデフォルトになってるのがうざったいから、/usr/bin/pythonを2.6へのリンクにして、/usr/bin/yumの1行目で直接2.4を指定した。
 

[root@eth0 ~]# ll /usr/bin/python*
lrwxrwxrwx 1 root root   22  1月  9 05:14 /usr/bin/python -> /usr/local/bin/python2
lrwxrwxrwx 1 root root    6  4月  2  2009 /usr/bin/python2 -> python
-rwxr-xr-x 1 root root 5632  1月 21  2009 /usr/bin/python2.4
[root@eth0 ~]# ll /usr/local/bin/python*
lrwxrwxrwx 1 root root       7 12月 17 15:09 /usr/local/bin/python -> python2
lrwxrwxrwx 1 root root      16  1月 23  2009 /usr/local/bin/python-config -> python2.6-config
lrwxrwxrwx 1 root root       9  1月 23  2009 /usr/local/bin/python2 -> python2.6
-rwxr-xr-x 1 root root 4241855  1月 23  2009 /usr/local/bin/python2.6
-rwxr-xr-x 1 root root    1424  1月 23  2009 /usr/local/bin/python2.6-config
lrwxrwxrwx 1 root root       9  1月 23  2009 /usr/local/bin/python3 -> python3.0
-rwxr-xr-x 1 root root 3986822  1月 23  2009 /usr/local/bin/python3.0
-rwxr-xr-x 1 root root    1401  1月 23  2009 /usr/local/bin/python3.0-config
[root@eth0 ~]# cat /usr/bin/yum | head -1
#!/usr/bin/python2.4

 

Djangoプロジェクト作成

django-admin.py startproject [proj]

 

settings.py編集。

今回はSQLiteを使う。

import os
DATABASE_ENGINE = 'sqlite3'
DATABASE_NAME = os.path.dirname(__file__) + os.sep + 'django.sqlite'
TIME_ZONE = 'Asia/Tokyo'
LANGUAGE_CODE = 'ja'

 

DB初期化
cd [proj]
python manage.py syncdb

 

.htaccess
SetHandler python-program
PythonHandler django.core.handlers.modpython
PythonPath "['/path/to/parent/directory']+sys.path"
SetEnv DJANGO_SETTINGS_MODULE [proj].settings
PythonDebug On

 

アプリケーション作成

python manage.py startapp [app]

 

settings.py編集。

INSTALLED_APPSに作ったアプリケーションを追加。

'[proj].[app]',

 

モデル作成

vi [app]/models.py

 

DB同期
python manage.py syncdb

 

テンプレート作成

テンプレートディレクトリ作成
mkdir templates

 

settings.py編集

TEMPLATE_DIRSにテンプレートディレクトリを追加。

os.path.dirname(__file__) + os.sep + 'templates',

 

テンプレートファイル作成

{{と}}の中に変数名を入れるとその変数が展開される。

vi templates/[tmp].html

 

URLディスパッチャの定義

urls.pyのurlpatternsに追加。

(r'^[requesturi]$', '[proj].[app].views.[def]'),

 

ビュー関数の定義

vi [app]/views.py