Django on Jython (2)
前回は本当に動くだけってレベルだったので、データベースも使い、admin-siteの動作確認をしてみます。
環境
- Windows XP
- Java: 1.6.0_07
- Jython: SVNからの最新版(Rev.5321)
- Django 1.0
- django-jython: SVNからの最新版(Rev.32)
- PostgreSQL 8.3
データベースとdjango-jython
現状では、nativeな実装を使うようなライブラリをJythonに組み込むことができません。したがって、Jythonでデータベースにアクセスする場合は、JDBCを使ってアクセスする事になります。
django-jythonはそんなデータベースのバックエンドのサポートと、WarファイルとしてJ2EEコンテナに配備する為のライブラリになります。
現在のバージョンでは、django-jythonはPostgreSQLしか対応していない為、データベースはPostgreSQL 8.3を使わなくてはなりません。ただし、基本的にはJDBCドライバをJythonで使うための薄いラッパーに過ぎないため、簡単にMySQLは対応できます(誰か作ってね)とドキュメントに書いてあります。
尚、SQLiteはnative色が強すぎるのか、チャレンジャーになりたいならばつかってみては?という感じです。
というわけで、PostgreSQL 8.3をインストールしておきましょう。尚、JDBCドライバはJythonの付属Jarに含まれているので、別途用意する必要はありません。インストール後、ユーザjythonとデータベースtestを作成しておきます。
次にdjango-jythonをインストールします。これは、SVNから最新版を取得して、setup.pyをjythonで実行するだけです。尚、Jythonをビルドしなおすと、Lib以下もクリアされるので注意しましょう。
svn co http://django-jython.googlecode.com/svn/trunk/ django-jython
http://code.google.com/p/django-jython/wiki/Install
cd django-jython
jython setup.py install
settings.py
Djangoのデータベース周りの設定はsettings.pyで行います。django-jythonを使う場合は、DATABASE_ENGINE にpostgresqlではなく、postgresqlのラッパークラスを指定します。
DATABASE_ENGINE = 'doj.backends.zxjdbc.postgresql' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'ado_mssql'. DATABASE_NAME = 'test' # Or path to database file if using sqlite3. DATABASE_USER = 'jython' # Not used with sqlite3. DATABASE_PASSWORD = 'jython' # 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.
Adminサイトを試す
次にAdminサイトを動かすために、settings.pyとurls.pyを少しだけ編集しましょう。
まず、settings.pyのINSTALLED_APPSにadminを追加します。
INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.admin', # 追加 )
次にurls.pyのadmin-site用のコメントを削除しましょう。
from django.conf.urls.defaults import * # Uncomment the next two lines to enable the admin: from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', # Example: # (r'^j_site/', include('j_site.foo.urls')), # Uncomment the admin/doc line below and add 'django.contrib.admindocs' # to INSTALLED_APPS to enable admin documentation: # (r'^admin/doc/', include('django.contrib.admindocs.urls')), # Uncomment the next line to enable the admin: (r'^admin/(.*)', admin.site.root), )
サーバを起動したならば、http://localhost:8000/admin/ を開いて確認です。
先ほど登録したadmin/adminでアクセスして、ユーザの追加などを一通り実行してみましたが、問題なく動作しているようです。