今日は数時間ほどユーザー登録周りのコードを書いていた。
こうしてチュートリアル以外で、まともにdjangoをさわるのはほぼ初めてです。
基本的にはdjango-registrationを、公式リリースであるdjango0.96で使えるように改造する作業。
いくつか気づいた点
* djangoのデフォルトのテーブルauth_userのフィールドemailはuniqueではない。なので、同じメールアドレスのユーザーをじゃんじゃん登録できる。
* ↑これは別にいいんじゃないと思うが、こうなっていると、複数ユーザーが同じemailアドレスを使っている場合パスワードのリセット機能が動かない。(これはすでに公式のバグレポートに上がっているようだ。)
* なので、登録時にemailの重複チェックを追加実装する必要がありました。初心者なので汚い実装方針でしたが一応チェックできるようになった。
* パスワードリセットフォームがadmin標準のものだったので、自分の用意したテンプレートに差し替えた。
* urls.pyの書き方が難しい、全てのリンクがうまくつながるようになるために、いろんな箇所を微調整。
* メールで送られてくるURLを正しいものにするには、siteテーブルを書き換える必要があることに気づくのにしばらくかかった。
djangoを使う人たちはこういうのは普通にすぐに自作してしまうんだろうか。
Turbogearsならこういうのはコマンド一発で完了してしまうのとは対照的。
しかしdjangoの勉強になったのでよかったと思う。
なんだかいろいろわかってきたよ。