ローカルで python manage.py syncdb してみる
次は Django のチュートリアルを進めてみる。
使ったのは「django tutorial 1.5」で検索して最初に出て来たページ。(日本語版はないのかな?)
Database setup
プロジェクトを作る所まではやってあるので、データベースの設定から。
と、言っても既に settings.py には設定してあるのでとりあえずローカルで syncdb してみる。
(venv)[paraches@praches.com myHeroku]$ python manage.py syncdb ImproperlyConfigured: settings.DATABASES is improperly configured. Please supply the ENGINE value. Check settings documentation for more details. (venv)[paraches@praches.com myHeroku]$
エラー出た〜!
Heroku サーバ上では問題なかったのだけど、ローカルでやるとエラーになる。
データベースについての設定が settings.py でされていないってエラーなのだけど、考えてみれば当たり前。
settings.py では Heroku サーバで使う設定を最後に付け加えただけで、そうでない場合のデータベースの設定はされていない。
というわけで普通に DATABASES = に設定するのかな?と思ったけど(web では DATABASES に postgresql を指定している話が多い)、postgresql は使ったことないしユーザ設定とか面倒…。
で、探してみると settings.py の最後に加えた dj_database_url.config() で使うデータベースの設定ができるみたい。
ここで default の値として使用するデータベースの URL を渡せば、Heroku サーバ以外(ローカル)ではその値を使うらしい。
- http://stackoverflow.com/questions/12308046/how-to-launch-your-already-made-django-app-on-heroku
- http://stackoverflow.com/questions/13729738/setting-django-and-dj-database-url-for-local-development
ただ、default='postgres://localhost'ってな感じで postgresql を指定するのがやっぱり多い…。
sqlite じゃダメ? と思ったけど、sqlite を使っている人もいるみたいなのでやってみた。
# Parse database configuration from $DATABASE_URL import dj_database_url DATABASES['default'] = dj_database_url.config(default='sqlite://localhost/sqlite.database')
settings.py をこんな感じにして、syncdb してみる。
(venv)[paraches@praches.com myHeroku]$ python manage.py syncdb … 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 (leave blank to use 'paraches'): Email address: xxxxxxxx@gmail.com Password: Password (again): Superuser created successfully. Installing custom SQL ... Installing indexes ... Installed 0 object(s) from 0 fixture(s) (venv)[paraches@praches.com myHeroku]$
エラー出ずに成功したよ!