Django 1.4からの機能であるproject templateが大変便利であると最近気づいた。
2012.9.21 追記
app templateじゃないよ
app templateって書いてたけどproject templateだった。
2012.9.22追記
@hirokiky 先程,動画とプレゼン資料を見ながらproject templateを実行しました.templateのプログラム内に日本語を入れたら,django-admin.py startproject...でエラーがでるようですね.もしよければ記事に追記お願いします.
2012-09-21 21:04:07 via web to @hirokiky
日本語はできません
2012.10.21追記
開発版では Non-ASCII 文字にも対応してる
project templateって?
これはプロジェクト、アプリ立ち上げ時(startproject, startapp)にテンプレートとして
用意しておいた骨組みを適用しようというもの。
マネジメントコマンド(django-admin.pyとか)に引数として渡して使う。
例えば/path/to/my_project_template directoryをproject templateにしてプロジェクトを立ち上げるときは、こうなる
% django-admin.py startproject --template=/path/to/my_project_template my project
これの良い点は2つある
- 特定環境に対するデプロイが簡単になる
- ノウハウを詰め込んでおける
特定環境に対するデプロイが簡単になる
特定環境(例えばherokuとかdotcloud)に対するデプロイが簡単になる。
そういった環境に必要なファイルは毎度決まっていて、それをプロジェクト立ち上げごとに書くのは面倒よね。
(herokuだとProcfileだとかrequirement.txtだとかwsgiだとか)
そういったものをproject template上に用意しておいてやることで毎度用意する必要がなくなる。
良さげな、heroku+S3環境向けのproject templateがあったので紹介しておく。
さらに良いのは、必要そうなモジュールもまとめておけるということ。
django-skelの場合だと、Southやcompressor、debug-toolbarも標準で一緒くたになってる。
「この環境、規模だとSouthも要るなぁ。debug-toolbarも要るかぁ」なんて考える必要は無い。
特定環境で必要になる、なりそうなアプリケーションは全部書いておく
ノウハウを詰め込んでおける
ノウハウ、とくに設定ファイルまわりのノウハウをproject templateに詰め込んでおけば、それらを適応する手間が省ける
設定ファイルで気になるのが、開発環境と本番環境の切り分け。
ローカル専用の設定ファイル(local_settings.pyとか)を設定ファイルの末尾で読み込ませることで、
環境の切り分けをしてたりすることと思う。
設定ファイル(settings.py)の末尾に以下みたいなコードを角ってこと
try: from local_settings import * except ImportError: pass
でも毎度これを書いてやるのって面倒よね。
もちろんこれだけならまだいいけど、他にも設定ファイル周りのノウハウってある。
他にもSECRET_KEYの扱いとかあるよね。毎度毎度こんなこと考えてられねぇよと。
じゃぁこの辺のノウハウもproject templateに適用してしまえば良い。
さっきのdjango-skelの設定ファイル周りを見てほしい
上記したようなノウハウがバッチリ詰め込まれている。
単にproject templateをstartproject時に取り込めば良いだけで、ノウハウを適応する必要が無くなる
まとめ
以上の
- 特定環境に対するデプロイが簡単になる
- ノウハウを詰め込んでおける
という2点がproject templateの良い点であり、注目する理由。
しかもこのhttps://github.com/rdegges/django-skel:django-skelはパブリックドメインなので
自由に使っていいとのこと(本人に確認済み http://twitter.com/#!/rdegges/status/219528392624713728)
まだ使いはじめたばかりなので、見えてこない点も多い。
落とし穴とか、さらなるいい点について分かったらまた書く。
おわりに
何でこのdjango-skelを見つけたかという話。
今、日本のDjangoコミュニティのサイトであるdjangoproject.jpが古くさいのでリフォームを模索してる。
2012.9.21 追記:リニューアルしたよ
ソースコードも公開してますよ
end追記
せっかくリフォームするからには、サイト自体がDjangoの良きサンプルであるようにしたいと思ってる。
ノウハウを詰め込んで、最新のDjangoのいい点をなるべく使って作ろう、と。
例えば「Djangoのチュートリアルやったけど、何か良いサンプル無いかな」と言う人に『djangoproject.jpがあるじゃん!』って言えるみたいな。
そこでフラフラ面白そうなもの探してたら、このdjango-skelに出会った。というわけ。
ただまぁ、こいつをdjangoproject.jpに使っても良いけどherokuとかS3使ったこと無いからどうしようかってかんじ。
試しに何かWebサービス作ってみようかね。
ともかく、ナイスなアイディアある人とか、協力したいよという人は連絡下さい。