Djangoヤバい

とにかくDjangoがヤバい。

何がヤバいって、何もかもヤバいんだけど、まず超簡単。ライブラリのインストールが済んでれば、

django-admin startproject mysite
cd mysite
python manage.py startapp myapp
vi settings.py
※データベース設定、自動アドミンライブラリ、myappの登録
vi myapp/models.py
※モデルの作成。各モデルにdef __unicode__(self)
  return (なんか識別できるもの)

class Admin
  pass
を追加しておくと幸せになれる。

python manage.py syncdb
python manage.py runserver

で、サーバーの8000番ポートにアクセスするだけで、なんかうごいちゃう。追加とか削除もできちゃう。ヤバい。

モデルのリレーションだって、models.ForeignKeyとかやっとけばちゃんと解決してくれるし、validationだってちゃんと出来る。ヤバい。

認証なんてDjango.contrib.authとかインポートすればデコレータでビューに一行追加するだけだし、テンプレートとか継承読込なんでもござれだ。マジヤバい。

そりゃまあ、views.pyで渡したdatetimeがテンプレートでdateフィルタ使えなくて30分悩んだ末にテンプレート内部じゃunicode文字列になってることに気付いたんだけどなんで?とか、モデルのDateTimeフィールドにdate()が無くてジャストその日!って検索条件指定したきゃ__yearと__monthと__day一個づつ合わせるかDateとTimeにフィールド分割するしかないの?とかよくわかんない事もいっぱいあるけどとにかくヤバい。ってか楽しい。

とにかくお前らは、「ああ。オレはプログラムを書きたかったんじゃなくて、モノを作りたかったんだ」って勘違いしそうになるDjangoのヤバさをもっと知るべきだと思う。

なんちって。

Django覚書き

・なんか最近(?)unicodeカンケイのマージがあったようで、そのせいなのかコードがマズいのか、たまにデコードエラーがでる。
・日本語文字列をコードに埋め込む時はu'日本語'とやっとかないと不幸になることがある。
・やっといても不幸になることがあるみたい。多分。
・DBからデータを引っ張って来た時に文字列フィールドにNone(DB上では空文字列になってるような気がする?)だとエラーになる(ような気がする)。
・それはライブラリよりコードの問題だろ。多分。
・じゃあ空ってのをどうやって表現するかっつうと、この際アレだ、*一文字とか替わりに保存しといて、ビューで処理しちゃえ。ってのを今思い付いたんだけどソレいつの時代のワザだよ。
・というわけで文字の扱いについてはもうちょっと探ってみることにする。
・っていうかいつまでも自動Adminに頼ってないでいい加減自前のビュー作れよ、オレ
・つっても自動Adminよりかっちょええ入力フォームとか作れる自信が全くない。フィルタとかあるし、並べ替えできるし、検索もできるし、スグレモノすぎませんか、と。