MacでDjangoをさわってみた
新年,あけましておめでとうございます.
年明け一発目はPythonネタです.PythonのWebアプリケーションフレームワークはいくつかあって,Ruby on RailsみたいWebアプリならこれ!という状況にはなっていません.私はTurboGears派で今までDjangoを触ったことがありませんでしたが,昨年末にリリースされたTurboGears 2.0β1がうまく導入できなかったので,Google App Engineでも採用されたDjangoも試してみることにしました.
第6回 Djangoフレームワークを利用してWebアプリケーションを作成する | 日経 xTECH(クロステック)を参考にやったのですが,一部うまくいかなかったので補足しておきます.今回使用したバージョンはPython 2.5.2とDjango 1.0.2です.また,DBにはSQLiteを使いました.
インストール
必要なものはすべてMacPortsでインストールできます.この辺のお手軽さはDjangoの魅力でしょうか.DjangoはSQLite3を要求するので,Python 2.5を使っていても別途インストールが必要です.
$ sudo port install py25-hashlib $ sudo port install py25-zlib $ sudo port install py25-sqlite3 $ sudo port install py25-django
データベースの設定
SQLiteを使うのでmyprj/settings.pyを次のように変更します.
DATABASE_ENGINE = 'sqlite3' DATABASE_NAME = '/Users/name/myprj/site.db'
DBに関する他の項目は使用しません.DATABASE_NAMEには使用する.dbファイルの名前をフルパスで指定します.
X-MAC-JAPANESE
しばらく進めるとX-MAC-JAPANESEというエラーがでるので修正します.Djangoで「X-MAC-JAPANESE〜」とかエラーが出たら - 牌語備忘録 -pygoを参考にしました.
/opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/django/utils/tzinfo.pyの8行目あたりを修正します.
DEFAULT_ENCODING = locale.getdefaultlocale()[1] or 'ascii' # この行を探して下2行を追加 if DEFAULT_ENCODING == 'X-MAC-JAPANESE': DEFAULT_ENCODING = 'ascii'
これでもまだ文字コードの問題がでる場合は,日本語を含むファイル(コメントも含めて)の冒頭に
# -*- encoding: utf-8 -*-
を記述しているか確認してください.
myappと管理ページをサイト設定に追加
ITproの記事はこの説明が抜けているので,http://localhost:8000/にアクセスしてもTemplateSyntaxErrorになるし,http://localhost:8000/admin/にアクセスしても管理ページが表示されないしという致命的な状態になっています.解決するために,myprj/settings.pyのTEMPLATE_DIRSとINSTALLED_APPSを編集します.
TEMPLATE_DIRS = ( "/Users/name/myprj/myapp/templates/" ) INSTALLED_APPS = ( .... 'django.contrib.admin', 'myprj.myapp' )
TEMPLATE_DIRSはDjango標準以外の場所にテンプレートを置く場合に,その場所を検索パスに追加するように指定する変数です.次に追加したアプリのテーブルを作成します.
$ python manage.py syncdb
最後に
今回ITproを参考にやりましたが,実は公式ドキュメントのはじめてのDjangoアプリ作成が非常によくできているので,Djangoがどんなものか試してみたいならこちらがおすすめです.最後に雑感を記しておきます.