常山さんビルドで簡単にWindowsにDjangoをインストールする

  • 6月 19, 2007 06:00

2007/06/30に行われるPython Workshop 2007にて 実際にコードを書きながらPythonを学ぶハンズオンというコーナーでDjangoのを担当させていただくことになりました。

参加者の方々には事前に開発環境を用意していただくことになるので今回はWindowsに簡単にDjangoをインストールする方法を紹介したいと思います。

私の環境はPython2.4なのでそれにインストールします。 DjangoはPython2.3でも動くことは動くのですが、2.4以上の方がいろいろ便利なので2.4以上に入れましょう。

常山さんがインストーラーでDjangoを簡単にインストールするファイルを公開されているので今回はそれを使います。 2回クリックすればいいので非常に簡単です。 データベースはsqllite3を使います。

http://django.kuchinawa.com/

ステップ1 pysqliteの最新版をダウンロード。インストーラーにしたがってインストール Python2.5の場合はインストールする必要はありません

ステップ2 Djangoの最新版をクリックしてインストール。

ではちゃんとインストールされているか確かめてみましょう。 まずdjango-amdin.pyでプロジェクトを作ります。

django-admin.pyはc:\Python24\Scriptsにあります。 c:\Python24\Scriptsにパスを通してない場合はdjangoのみならず使うことが多いと思われるのでパスを通してきましょう。 パスを通すのが面倒という場合は直接動かしても良いでしょう。

パスを通している場合
C:\tmp\handson>django-admin.py startproject djangohandson
パスを通してない場合
C:\tmp\handson>c:\Python24\Scripts\django-admin.py startproject djangohandson

作ったプロジェクトのディレクトリに移動しますして作られたファイル群を確認します。

C:\tmp\handson>cd djangohandson
C:\tmp\handson\djangohandson>dir
C:\tmp\handson\djangohandson のディレクトリ

2007/06/18  10:05    <DIR>          .
2007/06/18  10:05    <DIR>          ..
2007/06/18  10:05               557 manage.py
2007/06/18  10:05               750 manage.pyo
2007/06/18  10:05             3,021 settings.py
2007/06/18  10:05             1,817 settings.pyo
2007/06/18  10:05               248 urls.py
2007/06/18  10:05               247 urls.pyo
2007/06/18  10:05                 0 __init__.py
2007/06/18  10:05               150 __init__.pyo

次にdemoという名前のアプリを作ってみましょう

C:\tmp\handson\djangohandson>python manage.py startapp demo

こちらもファイル群ができているようです。

C:\tmp\handson\djangohandson>dir demo
C:\tmp\handson\djangohandson\demo のディレクトリ

2007/06/18  10:06    <DIR>          .
2007/06/18  10:06    <DIR>          ..
2007/06/18  10:06                60 models.py
2007/06/18  10:06               203 models.pyo
2007/06/18  10:06                27 views.py
2007/06/18  10:06               143 views.pyo
2007/06/18  10:06                 0 __init__.py
2007/06/18  10:06               146 __init__.pyo

次にSqlite3が使えるかのテストです

プロジェクト(ここではdjangohandson)直下のsettings.pyのDBの設定部分を以下のようにしましょう。

import os
BASE_DIR =  os.path.split(os.path.abspath(__file__))[0]

DATABASE_ENGINE = 'sqlite3'           # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'ado_mssql'.
DATABASE_NAME = os.path.join(BASE_DIR, 'handsondb')             # Or path to database file if using sqlite3.

これでプロジェクト直下にhandsondbという名前のDBができます(名前は何でもいいです)。 更に管理画面を確認するので最後にあるINSTALLED_APPにdjango.contrib.adminを追加しましょう。

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.admin', #ここに追加
)

次にインストールしたアプリをデータベースに反映させます。

C:\tmp\handson\djangohandson>python manage.py syncdb

Creating table auth_message
Creating table auth_group
Creating table auth_user
Creating table auth_permission
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 #管理ユーザー名 私はadminにしました
E-mail address: ueblog_django@gmail.com #管理者のE-mailアドレス。適当でいいですが、@と.がないとエラーになるはずです
Password: #password 忘れないようにしてください 私はテストの間はいつもadminです
Password (again):
Superuser created successfully.
Installing index for auth.Message model
Installing index for auth.Permission model
Loading 'initial_data' fixtures...
No fixtures found.

テストサーバーを動かします。デフォルトだと8000ポートを使います。

C:\tmp\handson\djangohandson>python manage.py runserver

8000ポートを他で使ってる場合は以下のようにすれば任意のポートで動かせます。
C:\tmp\handson\djangohandson>python manage.py runserver 8080
Validating models...
0 errors found.

Django version 0.97-pre, using settings 'djangohandson.settings'
Development server is running at http://127.0.0.1:8080/
Quit the server with CTRL-BREAK.

PCを2台使っているなど、他のPCのブラウザからアクセスしたい場合は以下のようにします。
C:\tmp\handson\djangohandson>python manage.py runserver 0.0.0.0:8080
Validating models...
0 errors found.

Django version 0.97-pre, using settings 'djangohandson.settings'
Development server is running at http://0.0.0.0:8080/
Quit the server with CTRL-BREAK.

サーバーを止める場合は [ctrl]キー + c です。

Djangoのバージョンが0.97pre の場合は C:\Python24\djangoにあるcontribとconfを C:\Python24\Libsite-packages\djangoに移動(上書き)する必要があります。 上書きしたら一度サーバーを止めて、再度動かす必要があります。

ブラウザで http://127.0.0.1:8000/admin/ (ポート8000の場合) にアクセスしてDjango administrationの画面がでるはずです。 先ほど決めた管理者のユーザー名とパスワードを入力します(私の場合はadmin admin)

※ 私が行ったときはこのときにdatabaseがらみのエラーが発生してしまいました。 python manage.py reset admin をやったら直りました

※ このままだとsqlite3をコマンドラインから操作できません(python manage.py dbshell含む) sqlite3.exeを別途インストールする必要があります。

sqlite公式サイト のsqlite-3_4_0.zip A command-line program for accessing and modifing SQLite databases.(バージョンはそのつどの最新版でOK)をダウンロードしてください。解凍するとsqlite3.exeだけが解凍されます。

sqlite3.exeはパスの通る場所におく必要があります。私はc:\Python24\Scriptsに置きました。

では確認のためにdumpさせてみましょう。

C:\tmp\handson\djangohandson>sqlite3 handsondb .dump

※ sqlite3はUTF-8なので通常のままだと日本語が文字化けします。

C:\tmp\handson\djangohandson>chcp 65001

としておくと日本語でも文字化けしないようです。 追記)フォントをMSゴシックにする必要もあります。

※ windowsで本格的にsqlite3を使う場合はSQLite Database Browserをインストールすると良いようです。

http://sqlitebrowser.sourceforge.net/index.html

(このエントリーを書くにあたってLingerのDjango-jaでかなりいろいろ教わりました。教えてくれたみなさんありがとうございます。)