プロジェクトの作成
次にDjangoのプロジェクトを作成します。任意のフォルダ(著者は「C:¥codezine」フォルダ)で、以下のコマンドを実行します。今回はECサイトを構築するので「ecsite」というプロジェクト名とします。
> django-admin.py startproject ecsite
コマンド実行が完了すると「ecsite」というフォルダが作成され(「C:¥codezine¥ecsite」)フォルダ内には、以下の表に示した4つのファイルが作成されます。
| ファイル名 | 説明 |
| __init__.py | このディレクトリが Python パッケージであることを Python に知らせるための空のファイル |
| manage.py | Django プロジェクトに対するさまざまな操作を行うための管理コマンド用ユーティリティ |
| settings.py | Django プロジェクトの設定ファイル。DB接続定義や言語/タイムゾーンなど基本的な設定を記述する |
| urls.py | Django プロジェクトの URL設計を定義する。正規表現を用いてURLとビューのマッピングを定義する。 |
開発サーバの起動・動作確認
プロジェクトの作成を確認してみましょう。Djangoに同梱されている開発用スタンドアロンWebサーバを起動します。DOSプロンプトでプロジェクトのフォルダから(著者の場合「C:¥codezine¥ecsite」)以下のコマンドを実行します。
> manage.py runserver
ブラウザを立ち上げ「http://127.0.0.1:8000/」にアクセスしてください。以下の画面が表示されれば、プロジェクトの作成は成功しています。
setting.pyの編集(SQLite接続設定)
次に、データベースの接続、言語、タイムゾーンの設定をします。プロジェクトフォルダ直下にあるsettings.py(著者環境の場合「C:¥codezine¥ecsite¥settings.py」)を次のように編集します。
DATABASE_ENGINE = 'sqlite3' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. import os DATABASE_NAME = os.path.dirname(__file__) + os.sep + 'ecsite.sqlite' DATABASE_USER = '' # Not used with sqlite3. DATABASE_PASSWORD = '' # Not used with sqlite3. DATABASE_HOST = '' # Set to empty string for localhost. Not used with sqlite3. DATABASE_PORT = '' # Set to empty string for default. Not used with sqlite3. TIME_ZONE = 'Asia/Tokyo' LANGUAGE_CODE = 'ja'
SQLite3を使用する場合、DATABASE_ENGINEに「sqlite3」、DATABASE_NAMEには、データベースファイル名を指定します。上記では、Pythonコードによって、動的にファイルパスを生成しています(著者環境の場合「C:¥codezine¥ecsite¥ecsite.sqlite」という名前でデータベースファイルが作成されます)。SQLite3を使用する場合、DATABASE_USER、DATABASE_PASSWORD、DATABASE_HOST、DATABASE_PORTの指定は必要ありません。タイムゾーン、言語はデフォルト指定では、それぞれ「America/Chicago」「en-us」になっていますが、それぞれ「Asia/Tokyo」「ja」に書き換えます。
プロジェクト管理情報のDBへの同期
settings.pyを編集して使用するDBの設定などが完了したところで、DBを初期化します。プロジェクトフォルダの直下で以下のコマンドを実行します。
> manage.py syncdb
実行すると、DB上にDjangoの管理用テーブルが作成されます。実行中のプロンプトでDjangoのスーパーユーザーを作るか否かを聞いてくるので「yes」と打ち込んでください。その後、管理者ユーザーIDとメールアドレス、パスワードも聞いてきますので入力します。このユーザーは、後に管理インターフェイスでログインする際に使用するユーザーなので忘れないようにしておいてください。
Creating table auth_permission Creating table auth_group Creating table auth_user Creating table auth_message Creating table django_content_type Creating table django_session Creating table django_site You just installed Django's auth system, which means you don't have any superusers defined. Would you like to create one now? (yes/no): yes Username: admin E-mail address: user@example.com Password: Password (again): Superuser created successfully. Installing index for auth.Permission model Installing index for auth.Message model
DBの確認(syncdb実行結果の確認)
データベースを初期化したところで、作成したDBの中身を確認しましょう。SQLiteのDBを参照するには、SQLite3の実行ファイルを取得する必要があります。SQLiteのサイトのダウンロードページで「sqlite-3.6.14.tar.gz」(執筆時の最新)を取得し、ファイルを解凍して「sqlite3.exe」を環境変数PATHが通っているフォルダにコピーしてください。その後プロジェクトフォルダに移動し、次のように実行します。
> sqlite3 ecsite.sqlite
上記のecsite.sqliteの個所には、DBファイル名を指定します。本稿ではsettings.pyのDATABASE_NAMEパラメータに指定したファイル名です。
SQLite3 のプロンプトが立ち上がったら、以下のコマンドを打ち込んでください。Create Database文や作成したテーブルのCreateテーブル文を参照することができます。SQLiteのプロンプトではSQLを実行したり、テーブルを作成したり、データベースを直接操作することができます。
> .dump
Djangoでは「manage.py dbshell」とオプションを指定することでsettings.pyに設定したDBを直接操作できるのですが、Django1.1Betaの場合、Windowsではうまく動作しないのでSQLite3の実行ファイルを直接起動してデータベースファイルにアクセスするか、SQLite3用アクセス用のツールなどを使用する必要があります。筆者は、環境変数PATHで指定されたフォルダにSQLite3の実行ファイルを配置し「manage.py dbshell」を実行したのですが、以下のエラーが出力され、操作できませんでしたので本稿では直接sqlite3のコマンドを実行します(※2009年7月13日現在のレポジトリのメイントランクから取得した最新ソースの場合、正常にdbshellが実行できました。1.1の正式版ではバグは修正されるようです)。
> manage.py dbshell Error: You appear not to have the 'sqlite3' program installed or on your path.

