Django1.5 tutorial Part 1 個人的メモ
DjangoのインストールはDjangoドキュメントの通りにやっておくこと.
Djangoがインストールされているかの検証は以下のようにコマンドラインで打ってバージョン情報が出力されればOK.
python -c "import django; print(django.get_version())"
プロジェクトの作成
django-admin.py startproject mysite
上記コマンドを実行するとmysiteディレクトリがカレントディレクトリに作成される.作成されるディレクトリ構成は以下の通り.
mysite/
manage.py # Djangoの管理コマンドを提供
mysite/ # このプロジェクトのためのPythonパッケージ
__init__.py
settings.py # このプロジェクトの設定情報を管理
urls.py
wsgi.py
開発用サーバー
開発用の簡易Webサーバーを立ち上げることでDjangoプロジェクトの動作チェックが可となる.外側のmysiteディレクトリに移動して以下のコマンドを実行する.
python manage.py runserver
# または python manage.py runserver 8080 # port番号の指定
# または python manage.py runserver 0.0.0.0:8000 # IPアドレスとport番号の指定
Databaseの設定
mysite/settings.py中のDATABASES辞書中の'default'項目の各設定値を適切なものに変更する.
- ENGINE
- 'django.db.backends.postgresql_psycopg2'
- 'dango.db.backends.mysql'
- 'django.db.backends.sqlite3'
- 'django.db.backends.oracle'
- その他
- 上記のどれかを指定する
- NAME
- SQLiteを使っている場合,databaseはマシン上のファイルとして存在するので,NAMEにはそのファイルのフルパスを指定すればよい.
- USER
- SQLiteでは必要ない
- PASSWORD
- SQLiteでは必要ない
- HOST
- Databaseが稼働しているホスト名を指定する
その他TIME_ZONEを設定したりする.
またINSTALLED_APPSタプルではこのDjangoインスタンスで有効化するアプリケーションを指定する.これらの各アプリケーションは少なくとも一つのDBテーブルを使用するので,以下のようにDBの初期化コマンドを実行する.このコマンドはDBの生成等を行う.
python manage.py syncdb
syncdbコマンドはINSTALLED_APPSの設定を見て必要なDBテーブルを生成する.
モデルの作成
次に行うのはappの生成である.DjangoはMTV(Model-View-Template)モデルのフレームワークらしい
DjangoにおけるProjectとappsの違い
appsはWebアプリケーション(ブログ等)で,Projectは特定のWebサイトにおける設定やappsのコレクションである.なので,あるProjectは複数のappsを持つ事が出来るし,あるappは異なる複数のProjectに所属することも出来る.
また,appsはpythonのパスが通っているところならどこに置いておいても動作は可能(実際はただのPythonパッケージなので)だが,通常は所属するProjectのディレクトリ配下に置かれる.
モデル作成
appを作るにはmanage.pyを実行する.
python manage.py startapp polls
このチュートリアルではpollsというアプリを作成している.上記を実行するとpollsディレクトリが作成される.pollsディレクトリの構造は以下の通り.
polls/
__init__.py
models.py
tests.py
views.py
Djangoにおけるdatabase(を使う)Webアプリを書くための最初のステップはモデルを定義することである.
このチュートリアルではPollとChoiceの二つのモデルを作る.
from django.db import models class Poll(models.Model): question = models.CharField(max_length=200) pub_date = models.DateTimeField('date published') class Choice(models.Model): poll = models.ForeignKey(Poll) choice_text = models.CharField(max_length=200) votes = models.IntegerField(default=0)
各クラスのフィールド(CharField, DateTimeField等)はFieldクラスのインスタンスを表している.そしてFieldインスタンスの名前(questionやpub_date)はクラスのフィールド名であり,Pythonコード中で参照可能であり,かつDBのテーブルの列名も兼ねている.
モデルの有効化
model.pyにモデルを記述すると以下のことが出来るようになる.
でも最初にやることはsettings.py
中のINSTALLED_APPSに新規作成したPollsアプリを登録すること.やり方は以下の通り.
INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', # Uncomment the next line to enable the admin: # 'django.contrib.admin', # Uncomment the next line to enable admin documentation: # 'django.contrib.admindocs', 'polls', )
そうすると以下のコマンドを実行してDBスキーマ用のSQL文を確認出来る.
python manage.py sql polls
注意点として,sql
コマンドは実際にSQLを実行する訳ではなく,あくまでもDjangoがこのアプリに必要なSQL文はどんなものかを確認するためのものである.実際にdatabase上で実行させるにはもう一度syncdb
コマンドを実行すればよい.
python manage.py syncdb
APIで遊ぶ
Djangoのshell
コマンドを実行するとDJANGO_SETTINGS_MODULE環境変数をセットした状態でpythonのインタプリタを起動出来る.こうするとDjangoのディレクトリや自分で作成したアプリへのパスが通った状態となるので,コマンドラインで色々な動作チェックが可能となる.
python manage.py shell
どんなことが出来るかはドキュメントを参照のこと.