【Python】 Djangoをapt-getでUbuntuにインストール
Ubuntu 7.10 Gutsy
Djangoをapt-getしてインストールする場合を紹介する。
Djangoを本家からダウンロードしてセットアップする場合は以下を参考。
【Python】 Djangoのインストールと設定
DjangoはPythonのWebフレームワークで最近勢いがある。
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をインストールする前に以下の準備が必要。
【Ubuntu】 apt-getでインストールした場合のLAMP (Python)の設定
では、Djangoのインストール。
# sudo apt-get install python-django
DocumentRootに移動。
デフォルトでは/var/www
# cd /var/www
# sudo django-admin startproject myprj
# ls
Apache2の設定。
# sudo gedit /etc/apache2/sites-available/default
<Location "/myprj/">
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
SetHandler python-program
PythonPath "['/var/www'] + sys.path"
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE myprj.settings
PythonDebug On
</Location>
Apache2を再起動。
# /etc/init.d/apach2 restart
ブラウザで確認。
http://localhost/myprj
Djangoに付属している開発用serverでも確認する。
# cd /var/www/myprj
# python manage.py runserver
http://localhost:8000/myprj
開発用serverの利点はpythonスクリプトの変更が即座に反映されることと、デバッグ情報をターミナルに出力できることだ。
次にアプリケーションを登録する。
# python manage.py startapp myapp
ディレクトリ構造はこうなるはず。
[DocumentRoot]
|-myprj
|-myapp
/var/www/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 = (
'/var/www/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をUTF-8に。
/etc/mysql/my.cnfを編集。
# sudo gedit /etc/mysql/my.cnf
[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8
skip-character-set-client-handshake
MySQL再起動。
# /etc/init.d/mysql restart
MySQLにデータベースを作成する。
# mysql -u root -p
mysql> create database myprj
mysql> quit
/var/www/myprj/myapp/models.pyとデータベースを同期する。
# python manage.py syncdb
/var/www/myprj/myapp/models.pyにクラスを追加すると同期する必要がある。
ただし、クラス属性(プロパティ)を変更しただけだとDBに変更が反映されない。
その時はALTER TABLEのSQLをコールする必要がある。
あるいは、データが不要ならテーブルをドロップして同期する。
/var/www/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
/var/www/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 })
/var/www/myprj/myapp/template/index.htmlの実例
<html>
<body>
{% for user in users %}
<p>{{user.username}}, {{user.password}}, {{user.description}}</p>
{% endfor %}
</body>
</html>
/var/www/myprj/urls.pyを編集。
(r'^myprj/myapp/$', 'myprj.myapp.views.index')
Apacheを再起動。
/etc/init.d/apache2 restart
ブラウザで以下にアクセス。
http://localhost/myprj/myapp/
動作が確認できたら、/var/www/myprj/settings.pyを編集する。
DEBUG = False
TEMPLATE_DEBUG = False
これをしないとDBのSQLクエリーがメモリーに残り、メモリーリークのような振舞になる。
設定を有効にするためにApacheの再起動もわすれずに。
[Django オンラインドキュメント和訳]
Django がメモリリークを起こしているのですが、なぜですか?
Django が実行している生の SQL クエリを見られますか?

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