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) → 結局、ソースからインストールで解決!