【Python】 Djangoのインストールと設定
Ubuntu 7.10 Gutsy, Python 2.5, MySQL 5.0, Apache 2.0 + mod_python
DjangoはPythonのWebフレームワークだ。
Ruby on RailsやPHP Symphonyと比べてパフォーマンスは結構良いらしい。
Framework Performance in Ruby on Rails
Rails performed much better than Symfony. And Django performed much better than Rails.
Djangoをインストールする前に以下が必要。
[S] Apacheをソースからコンパイルしてインストール
[S] mod_pythonをソースからコンパイルしてインストール
[S] MySQLをソースからコンパイルしてインストール
[S] MySQL-pythonのインストール
上の4つのコンポーネントはすべてapt-getからインストール可能なので、ソースからビルドする必要はない。
【Python】 Djangoをapt-getでUbuntuにインストール
【Ubuntu】 LAMP (Linux, Apache2, MySQL, Python)一発インストール
また、DBを使わない場合はMySQLとpython-mysqlをインストールする必要はない。
本家よりdjangoをダウンロード。
http://www.djangoproject.com/download/
Django-0.96.1.tar.gzをダウンロードして解凍する。
tar zxvf Django-0.96.1.tar.gz
展開したディレクトリに移動してインストール開始。
sudo python setup.py install
Apacheの設定ファイル[apache2]/conf/httpd.confを編集する。
<Location "/myprj/">
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE myprj.settings
PythonDebug On
</Location>
Apacheを再起動。
[apache2]/bin/apachectrl restart
ApacheのDocumentRootに移動して、
python /usr/lib/python2.5/site-packages/django/bin/django-admin.py startproject myprj
ブラウザで「It works!」を確認する。
http://localhost/myprj
Djangoに付属している開発用serverでも確認する。
python manage.py runserver
ブラウザで「It works!」を確認する。
http://localhost:8000
開発用serverの利点はpythonスクリプトの変更が即座に反映されることと、デバッグ情報をターミナルに出力できることだ。
次にアプリケーションを登録する。
python manage.py startapp myapp
ディレクトリ構造はこうなるはず。
[DocumentRoot]
|-myprj
|-myapp
[DocumentRoot]/myprj/settings.pyを編集する。
DEBUG = True
TEMPLATE_DEBUG = True
DATABASE_ENGINE = 'mysql'
DATABASE_NAME = 'myprg'
DATABASE_USER = 'root'
DATABASE_PASSWORD = 'mypassword'
DATABASE_HOST = '127.0.0.1'
DATABASE_PORT = '3306'
TIME_ZONE = 'Asia/Tokyo Japan'
TEMPLATE_DIRS = (
'[DocumentRoot]/myprj/myapp/template',
)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'myprj.myapp'
)
アプリケーションは複数登録できる。
ので、プロジェクトは複数のアプリケーションを持つことができる。
myappに移動して、models.pyを編集。
from django.db import models
# Create your models here.
class User(models.Model):
username = models.CharField(maxlength=200)
password = models.CharField(maxlength=200)
description = models.TextField()
score = models.IntegerField()
datetime = models.DateTimeField(auto_now=True)
MySQLにデータベースを作成する。
# [mysql]/bin/mysql -u root -p
mysql> create database myprj
mysql> quit
myprj/myapp/models.pyとデータベースを同期する。
# python manage.py syncdb
myprj/myapp/models.pyにクラスを追加すると同期する必要がある。
ただし、クラス属性(プロパティ)を変更しただけだとDBに変更が反映されない。
その時はALTER TABLEのSQLをコールする必要がある。
あるいは、データが不要ならテーブルをドロップして同期する。
myprj/myapp/modes.pyの実例
# python manage.py shell
>>> from myprj.myapps.models import *
>>> User(username='foo', password='brabra', description='Hello', score=0).save()
>>> User(username='hoge', password='brabra', description='Good-bye', score=0).save()
>>> us = User.objects.all()
>>> for u in us:
>>> print u.username, u.password, u.datetime
myprj/myapp/views.pyの実例
from django.shortcuts import render_to_response, get_object_or_404
import models
def index(request):
users = models.User.objects.all()
return render_to_response('index.html', { 'users': users })
myprj/myapp/template/index.htmlの実例
<html>
<body>
{% for user in users %}
<p>{{user.username}}, {{user.password}}, {{user.description}}</p>
{% endfor %}
</body>
</html>
myprj/urls.pyを編集。
(r'^myprj/myapp/$', 'myprj.myapp.views.index')
Apacheを再起動。
[apache2]/bin/apachectrl restart
ブラウザで以下にアクセス。
http://localhost/myprj/myapp/
動作が確認できたら、myprj/settings.pyを編集する。
DEBUG = False
TEMPLATE_DEBUG = False
これをしないとDBのSQLクエリーがメモリーに残り、メモリーリークのような振舞になる。
設定を有効にするためにApacheの再起動もわすれずに。
[Django オンラインドキュメント和訳]
Django がメモリリークを起こしているのですが、なぜですか?
Django が実行している生の SQL クエリを見られますか?

0 件のコメント:
コメントを投稿
登録 コメントの投稿 [Atom]
この投稿へのリンク:
リンクを作成
<< ホーム