SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Djangoチュートリアル

Djangoチュートリアル(前編)

Python対応のWebアプリケーションフレームワーク


プロジェクトの作成

 次にDjangoのプロジェクトを作成します。任意のフォルダ(著者は「C:¥codezine」フォルダ)で、以下のコマンドを実行します。今回はECサイトを構築するので「ecsite」というプロジェクト名とします。

[リスト4] Djangoプロジェクトの作成
> django-admin.py startproject ecsite

 コマンド実行が完了すると「ecsite」というフォルダが作成され(「C:¥codezine¥ecsite」)フォルダ内には、以下の表に示した4つのファイルが作成されます。

初めに生成される4つのファイル
ファイル名 説明
__init__.py このディレクトリが Python パッケージであることを Python に知らせるための空のファイル
manage.py Django プロジェクトに対するさまざまな操作を行うための管理コマンド用ユーティリティ
settings.py Django プロジェクトの設定ファイル。DB接続定義や言語/タイムゾーンなど基本的な設定を記述する
urls.py Django プロジェクトの URL設計を定義する。正規表現を用いてURLとビューのマッピングを定義する。

開発サーバの起動・動作確認

 プロジェクトの作成を確認してみましょう。Djangoに同梱されている開発用スタンドアロンWebサーバを起動します。DOSプロンプトでプロジェクトのフォルダから(著者の場合「C:¥codezine¥ecsite」)以下のコマンドを実行します。

[リスト5] 開発用サーバの起動
> manage.py runserver

 ブラウザを立ち上げ「http://127.0.0.1:8000/」にアクセスしてください。以下の画面が表示されれば、プロジェクトの作成は成功しています。

図5:プロジェクト作成時トップ画面の確認
図5:プロジェクト作成時トップ画面の確認

setting.pyの編集(SQLite接続設定)

 次に、データベースの接続、言語、タイムゾーンの設定をします。プロジェクトフォルダ直下にあるsettings.py(著者環境の場合「C:¥codezine¥ecsite¥settings.py」)を次のように編集します。

[リスト6] 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を初期化します。プロジェクトフォルダの直下で以下のコマンドを実行します。

[リスト7] DjangoプロジェクトのDB初期化
> manage.py syncdb

 実行すると、DB上にDjangoの管理用テーブルが作成されます。実行中のプロンプトでDjangoのスーパーユーザーを作るか否かを聞いてくるので「yes」と打ち込んでください。その後、管理者ユーザーIDとメールアドレス、パスワードも聞いてきますので入力します。このユーザーは、後に管理インターフェイスでログインする際に使用するユーザーなので忘れないようにしておいてください。

[リスト8] DB初期化時のプロンプト表示
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が通っているフォルダにコピーしてください。その後プロジェクトフォルダに移動し、次のように実行します。

[リスト9] SQLite3の実行
> sqlite3 ecsite.sqlite

 上記のecsite.sqliteの個所には、DBファイル名を指定します。本稿ではsettings.pyのDATABASE_NAMEパラメータに指定したファイル名です。

 SQLite3 のプロンプトが立ち上がったら、以下のコマンドを打ち込んでください。Create Database文や作成したテーブルのCreateテーブル文を参照することができます。SQLiteのプロンプトではSQLを実行したり、テーブルを作成したり、データベースを直接操作することができます。

[リスト10] SQLite3のダンプ
> .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の正式版ではバグは修正されるようです)。

[リスト11] manage.pyからのDB接続
> manage.py dbshell
Error: You appear not to have the 'sqlite3' program installed or on your path.

次のページ
アプリケーションの開発

修正履歴

この記事は参考になりましたか?

Djangoチュートリアル連載記事一覧
この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 佐藤 治夫 (株式会社ビープラウド)(サトウ ハルオ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4065 2009/07/16 17:08

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー