Django のテンプレートでフォームの要素が hidden かどうかを調べる
Django の newforms library は、それだけでちいさな MVC の世界だ。テキストフィールドやラジオボタンといった View は django.newforms.widgets の Widget クラスとそのサブクラスが担当している。
フォーム要素の HTML をテンプレートで出力する簡単な例は以下のとおり。
<form method="post" action="">
{% for field in form %}
{{ field.label_tag }}
{{ field }}<br />
{% endfor %}
<input type="submit" />
</form>
しかし、このままだと hidden 要素でも <label> が出力されて具合が悪い。
Django の urlresolvers.py を読む
一身上の都合により Django の URL dispatcher について調べている。ドキュメントでだいたいの動作は把握したので、今回は urls.py に定義した URL のマッピングが実際にはどのように解決されているのか、ソースコードを読むことで理解を深めたい、と思う。
なお、参照したソースコードは SVN の Revision 7438 である。公開リリースの 0.96.1 とは内容が大きく異なる可能性があること、 Trac での議論やドキュメントを読むかぎり、このへんの実装については今後大きく変更されるかもしれないことを、あらかじめお断りしておく。
ruby-openid でログの出力先を変更する
ruby-openid は Ruby の OpenID ライブラリだが、そのままだとログの出力先が標準エラー出力に向けられている。これでは何かと困ることもあるだろう(たとえば、ユニットテストの結果に ruby-openid のデバッグ出力が混じって鬱陶しい、とか)。
Django と Python-Markdown 1.7 で UnicodeDecodeError
Python Markdown の最新版である 1.7 を Django で使うと、日本語など ASCII 以外の文字で UnicodeDecodeError が発生する。
Django のモデルで日本語を使うと UnicodeEncodeError が発生する
ちょっと前から Django で遊んでいる。教則本代わりの Django Book も含めて、完成度の高さに驚くことしきり。
ただ、実際に管理インターフェースでモデルの詳細を表示しようとすると、UnicodeEncodeError とかいう嫌らしいエラーが出て、萎える。
しかたなく python UnicodeEncodeError django で検索したら sitecustomize.py でデフォルトのエンコーディングを変更するとか、いや、str 関数に渡したい場合はそりゃそうなんだろうけど、せっかくフレームワーク使ってるんだし、この解決法じゃないんだろうな、っていうのしか見つけられなくてますます萎えてたわけだけど、やっと納得できる解決法が見つかったので残しておく。
ちなみに svn trunk な Django を使っている。