Djangoのプロジェクトをつくってみる

移転しました。

参考URL
http://ymasuda.jp/python/django/docs_0.95/tutorial01.html

プロジェクト作成

django-admin.py startproject mysite
・WEBサーバー起動
cd mysite
python manage.py runserver
・動作確認
 http://127.0.0.1:8000/

Databaseの設定

mysql -u root -p
> create database django_test;
> grant all on django_test.* to django@localhost;
> quit;
vi /RROJECT_ROOT/settings.py
-----
データベースへの接続パラメタに合わせましょう:
DATABASE_ENGINE -- 'postgresql', 'mysql' または 'sqlite3'のいずれかです.他のデータベースもじきにサポートします.
DATABASE_NAME -- データベースの名前です. SQLite を使っている場合にはデータベースファイルのフルパス (絶対パス) にします.
DATABASE_USER -- データベースのユーザ名です (SQLite では使いません).
DATABASE_PASSWORD -- データベースのパスワードです.(SQLite では使いません).
DATABASE_HOST -- データベースのあるホストです.データベースサーバが物理的に同じマシン上にあるのなら空文字列にしておきます.(SQLite では使いません).
-----

初期テーブル作成
python manage.py syncdb

投票アプリケーションの作成

モデルを作成する

参考URLのチュートリアルに記載されている投票(polls)アプリケーションを作成してみる。
Django でデータベース Web アプリケーションを書くための最初のステップは,モデルの定義だそうだ。
※本質的には,データベースのレイアウトと,追加のメタデータの定義らしい。

$ python manage.py startapp polls
$ vi polls/models.py
from django.db import models

class Poll(models.Model):
    question = models.CharField(maxlength=200)
    pub_date = models.DateTimeField('date published')

class Choice(models.Model):
    poll = models.ForeignKey(Poll)
    choice = models.CharField(maxlength=200)
    votes = models.IntegerField()

モデルを有効にする

プロジェクトにpollアプリケションの存在を教える
$ vi /PROJECT_ROOT/settings.py
-----
   :
INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'mysite.polls'
)
-----

・実行されるSQL文を確認する
以下のコマンドではまだDBにテーブルは作成されない
$ python manage.py sql polls
BEGIN;
CREATE TABLE "polls_poll" (
    "id" serial NOT NULL PRIMARY KEY,
    "question" varchar(200) NOT NULL,
    "pub_date" timestamp with time zone NOT NULL
);
CREATE TABLE "polls_choice" (
    "id" serial NOT NULL PRIMARY KEY,
    "poll_id" integer NOT NULL REFERENCES "polls_poll" ("id"),
    "choice" varchar(200) NOT NULL,
    "votes" integer NOT NULL
);
COMMIT;
・以下コマンドでDBに、pollアプリのテーブルが初めて作成される
$ python manage.py syncdb

後はチュートリアル1をいろいろ触って終了。

はまった箇所

mysqldbインストール
$ python
Python 2.5.1 (r251:54863, Jan 17 2008, 19:35:17) 
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 
>>> import MySQLdb
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "build/bdist.macosx-10.5-i386/egg/MySQLdb/__init__.py", line 19, in <module>
  File "build/bdist.macosx-10.5-i386/egg/_mysql.py", line 7, in <module>
  File "build/bdist.macosx-10.5-i386/egg/_mysql.py", line 6, in __bootstrap__
ImportError: dynamic module does not define init function (init_mysql)

 → 結局、ソースからインストールで解決!