2012-03-08

django-registrationの使い方

djangoでユーザー登録機能を簡単に追加できるプラグインdjango-registrationの使い方を調査中です。
pipからもインストールできますが、pipでインストールできる安定版バージョン0.7と、bitbucketでダウンロードできる0.8alpha-1とでは、だいぶ設定が異なるようです。

デフォルトでは次のように動作します。
  1. ユーザー名、メールアドレス、パスワードでユーザー登録情報が送信される
  2. Userオブジェクトが生成され(この状態ではis_activeがFalse)、ユーザーに確認メールが送信される。
  3. 確認メールの中のリンクがクリックされるとそのユーザーのis_activeがTrueとなってログインを行えるようになる

機能させるには、settings.pyの変更、DBの更新、urls.pyの変更、templateの作成の4つが必要です。

settings.py

INSTALLED_APPSに、"django.contrib.auth"、"django.contrib.sites"、"regstration"を記載します。
INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.sites',
    'registration',
    # ...other installed applications...
)
ACCOUNT_ACTIVATION_DAYS = 7 # One-week activation window; you may, of course, use a different value.
ACCOUNT_ACTIVATION_DAYS は、確認メールの有効期間(日単位)です。

urls.py

'registration.backends.default.urls' をincludeします。bitbucketでダウンロードできる最新版のバージョン0.8では次のようにします。
urlpatterns += patterns('',
    (r'^accounts/', include('registration.backends.default.urls')),
)
pipでインストールされるバージョン0.7では、'registration.backends.default.urls' ではなく 'registration.urls' としなければなりません。バージョン0.8で 'registration.urls' をincludeした場合は警告は出ますが一応動作はすると思います。

tempates

templateを作成するのはめんどうなので、手っ取り早く動作させたい場合は、以下でダウンロードできるテンプレートのどれかを使うと良さそうです。(ただし、バージョンごとテンプレートの使用が異なるようなので、正常に動作しない可能性が高いです。)
https://github.com/dokterbob/django-registration-templates (古い?)
https://github.com/banterability/django-registration-templates (使用可能な変数がコメントアウトして書かれているだけ)
https://github.com/yourcelf/django-registration-defaults (未確認)
https://bitbucket.org/cliff/django-registration-templates (未確認)

登録するユーザー情報が、ユーザー名とメルアドとパスワードだけでは足りないという場合は、UserProfileを使います。

0 件のコメント: