Djangoの基本操作と設定

2010年2月14日

関連記事

今回はDjangoの最も基本的な操作について説明したいと思います。
  • django-admin.py startproject proj_name

    djangoをインストールするとdjango-admin.pyというプログラムが実行可能になります。 最初に実行するコマンドがこのdjango-admin.pyです。
    このコマンドを実行するとプロジェクト名として指定したproj_nameと同じディレクトリが カレントディレクトリに生成されます。Djangoではアプリケーションをこのプロジェクトという単位で 管理していきます。プロジェクトを作成すると、__init__.py, manage.py, settings.py, urls.pyの4つの ファイルが生成されます。
    manage.pyでは、DBへのアクセスや開発したアプリケーションと全く同じ環境をサポートしている インタプリタモードなどを使用することができます。
    settings.pyはタイムゾーンやドキュメントルートなどのアプリケーションの基本設定を記述します。 Djangoで提供されているユーザ管理ライブラリやセッション機能など、アプリごとに必要となるライブラリの インポートもこのファイルで行うことになります。
    urls.pyは、URLマッパと呼ばれ、URLとそれに応答するハンドラを定義するファイルです。 DjangoはこのURLマッパのおかげで、クールなURLを簡単に設定することが出来ます。


  • python manage.py shell

    このコマンドを実行することで、プロジェクト環境をサポートしたインタプリタモードを 使用することができます。


  • python manage.py runserver

    このコマンドを実行することで、Djangoの簡易Webサーバを起動することができます。 ローカルマシン上での開発時には非常に役に立つもので、開発したものをその場で ブラウザごしに確認することが出来ます。


  • python manage.py startap app_name

    モデルを作成するために使います。
    Djangoにおけるモデルとは、いわゆるテーブルを定義するためのクラスです。 上記コマンドを実行すると、モデルを記述するためのディレクトリと基本プログラムが 生成されます。開発者は、app_name/models.pyにモデルを定義していき、app_name/views.pyに ビューを作成していくことになります。


  • python manage.py syncdb

    上記で定義したモデルを実際のDBに反映させるためのコマンドです。
    上記コマンドを実行する前に、settings.pyDATABASE_ENGINE, DATABASE_NAME等の データベース周りの設定を済ませておきましょう。また、データベースそのものまで作成してくれる 訳ではないので、以下のように、お使いのデータベースシステムに合ったコマンドを実行して、 データベースを作成しておきましょう。データベース名は、settings.pyのDATABASE_NAMEで定義したもの と合わせる必要があります。

    $ createdb db_name -O www-data

    定義したクラス名がDB名のサフィックスとして付与される形でテーブルが作成されます。 どのようにテーブルが作成されるかは、「python manage.py dbshell」にて確認できます。 また、Postgresqlの場合は「psql -l」で実際にDBが作成されていることを確認してみましょう。
    注意点としては、モデルのメンバを追加・削除・変更した際、削除や変更などといったテーブルの 仕様変更に完全に同期できないケースもあるようです。これは恐らく、実際に動作しているデータベースシステム の機能制約によるものだと思います。
    例えば、Postgresqlだと、テーブルへの追加・カラム名のリネームくらいはサポートしているのですが、 商用データベースのようなカラムの型の変更や削除はできません。 従って、syncdbで完全に同期できないのもうなずけます。このような現象を防ぐためにも、

    $ dropdb db_name
    $ createdb db_name -O www-data
    $ python manage.py syncdb

    と一旦データベースを全削除して再度同期をとることをお勧めします。


  • python manage.py dbshell

    このコマンドを実行すると、プロジェクトで作成したデータベースにログインすることができます。 Postgresqlのpsqlコマンドで作成したデータベースにログインできる機能と同じで、 テーブル定義やSQL文を発行してインタラクティブにテーブルにアクセスすることができます。