PinaxでDjango入門1 complete_projectとbasic_projectを動かす

  • 1月 17, 2009 00:02

先日のDjango勉強会Disc.6のフォローアップ第1回です。

  • Python2.5
  • django1.0
  • PIL
  • pinax (svnのtrunk)

で行っています。

まずpinaxのインストールは

% svn checkout https://svn.pinaxproject.com/pinax/trunk/ pinax

でsubversionを使ってインストールしてください。

そして問題のPILのが必要なのですが、インストールは前回のエントリーを参考にしてください。

ueBLOG | Python Image Libraryのインストール

まず、今回はcomplete_projectとbasic_projectを動かすところまでやってみたいと思います。

% cd projects/complete_project
% python manage.py syncdb
% python manage.py runserver 0.0.0.0:8001

のみでアプリが動きます。

スクリーンキャストを撮ったので、pinaxがどんなものか知りたい方は参考にしてください。

http://www.ueblog.org/media/static/django6_1/django6_1.swf

ではsettings.pyを読んでみましょう。このファイルは文字通り設定ファイルになります。

まずデータベースの定義です。

DATABASE_ENGINE = 'sqlite3'    # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'ado_mssql'.
DATABASE_NAME = 'dev.db'       # Or path to database file if using sqlite3.

pinaxではsqlite3を使い、プロジェクト直下のdev.dbというファイルにデータベースを作るようになっています。

これは、とりあえずすぐに動かせるように設定してあるので、本番環境ではMySQLやpostgresqlなどが良いと思います。

次にINSTALLED_APPS、complete_projectでは、これだけのアプリがインストールされるように定義されています。

INSTALLED_APPS = (
    # included
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.humanize',
    'django.contrib.markup',

    # external
    'notification', # must be first
    'django_openid',
    'emailconfirmation',
    'django_extensions',
    'robots',
    'dbtemplates',
    'friends',
    'mailer',
    'messages',
    'announcements',
    'oembed',
    'djangodblog',
    'pagination',
#    'gravatar',
    'threadedcomments',
    'wiki',
    'swaps',
    'timezones',
    'feedutil',
    'app_plugins',
    'voting',
    'tagging',
    'bookmarks',
    'blog',
    'ajax_validation',
    'photologue',
    'avatar',
    'things',
    'flag',
    'schedule',
    'microblogging',
    'locations',

    # internal (for now)
    'analytics',
    'profiles',
    'account',
    'tribes',
    'projects',
    'misc',
    'photos',
    'tag_app',

    'django.contrib.admin',
)
% python manage.py syncdb

をしたときに、これらのアプリのmodelを探して、その定義に沿ったtableを設定されたDBに作ります。

Webフレームワークの多くはデータベースのtableを定義が先で、それに沿ったmodelをフレームワーク側が作ることが多いようですが、Djangoは逆なのでデータベースの知識がそれほどなくても複雑なモデルを組上げることができます。

そして

% python manage.py runserver

でテストサーバーを動かすことができます。

Djangoを動かす環境とブラウザを動かす環境が違う場合は動画でやったように

% python manage.py runserver 0.0.0.0:8001

サーバーのIPアドレスと8001ポートを使用してテストサーバーが動きます。

0.0.0.0と指定しておくと、そのサーバーのIPアドレスで立ち上がるので便利です。

では、次回は

basic_projectのprofile(basic_profile)をcomplete_projectのものに変更する

をやることによって、

  • アプリを追加したときのsettings.pyの編集
  • urls.pyとurl関数の説明
  • templateの読み込みのルール

を説明してきたいと思います。