Djangoの学習にPinaxはどうだろう?
December 30, 2008 at 06:00 PM | View CommentsDjangoの学習に何がいいかと思っていたけど
Pinax はなかなか良い気がする。
これはDjangoのよく聞くPluginアプリを集めたもので、
「アホか!」
というほど、いろいろなモノが入っている。
pinax/apps/external_apps
には
- dbtemplates
- feedutil
- messages
- photologue
- things
- ajax_validation
- django_extensions
- flag
- microblogging
- robots
- threadedcomments
- announcements
- django_openid
- friends
- notification
- schedule
- timezones
- app_plugins
- djangodblog
- gravatar
- oembed
- voting
- avatar
- djangologging
- locations
- omb
- swaps
- wiki
- bookmarks
- emailconfirmation
- mailer
- pagination
- tagging
などがあった。
一方、それらを動かすモジュールも必要ですが、
pinax/libs/external_libs
を見ると
- Creoleparser-0.5.0
- Genshi-0.5.1
- elementtree-1.2.6
- Pygments-0.11.1
- dateutil
- docutils-0.4
- feedparser-4.1
- gdata.py-1.0.13
- geopy-trunk
- markdown-1.7
- misc
- python-openid-2.1.1
- python-twitter-0.5
- python-yadis-1.1.0
- pytz-2008b
- simplejson-1.9.1
- textile-2.0.11
- vobject-0.6.6
- ybrowsera
など、Pythonで良く使うモノが入っている。
manage.pyを拡張していて、これらをSite.addsitedirを使って動的に追加しているので、
いちいち足りないモジュールをeasy_installなどで追加することなくすぐに使えるようだ。
しかし、PILなどpythonオンリーじゃないモジュールやライブラリは当然、別途インストール。
svn checkout http://svn.pinaxproject.com/pinax/trunk/ pinax
でtrunk版を落として
その後は、面倒なsettings.pyなどの設定なしに
% cd pinax
% cd projects/complete_project/
% python manage.py syncdb
% python manage.py runserver
で、豊富なアプリがいきなり動く。
ちょっとだけ試してみたい人には非常にうれしい。
もちろんローカル環境でなく公開するなら、それなりの設定は必要。
しかし、
pinax/projects/complete_project/deploy
に
- complete_project.fcgi
- complete_project.wsgi
- modpython.py
などが存在しているし、ドキュメントにも詳しく書かれているので本番で使うのにあちこち調べまくる心配はなさそうだ。
Pluginを使ったときに、どのようなファイルの構成などをどうするか解説してあるBLOGや本はあまりないと思うので、
pinaxの構成や仕組みを参考にするとよいかもしれない。
Pythonのプロジェクトだけあって、ドキュメントもtrunk版のものがちゃんある。
Installation ? Pinax v0.7.0dev documentation
ただし、それぞれのPluginアプリは、それらについているドキュメントのようだ。
さて、pinaxを使用し、実際に稼動しているWebサービスには
などがある、
どのサービスもユーザー視点で見ると微妙な感じだが、どうやって実装しているか考えながら眺めると面白い。
まだ、ちょっと動かしてみただけだけど、もし使えそうなら
いろいろやってみようかと思う。
ちなみに、syncdb、runserverで動かした直後のpinaxの画面
ログイン画面
ログイン直後の個人設定の画面
ユーザーごとにタイムゾーンを選択可能
友達の招待も実装済み
ちなみに管理画面(クリックでオリジナルサイズ)