django-registrationのメモ

djangoでユーザー登録するライブラリとしてはdjango-registrationが一番ポピュラーみたいなので、さわってみました。
とりあえず動かしてみたってだけなので、使ったことのある人にとってはこのエントリから得るものは多分ないです。


1. インストール

pip install django-registration

2. INSTALLED_APPSにregistrationを追加

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # Uncomment the next line to enable the admin:
    'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
    # 他のアプリとか

    'registration' # 追加
)


3. settings.py にACCOUNT_ACTIVATION_DAYSを追加

ACCOUNT_ACTIVATION_DAYS=7 

4. メール送信設定を追加

とりあえず動かすだけなのでgmailを使いました

DjangoGmailを使ってメール送信
http://d.hatena.ne.jp/yuheiomori0718/20120714/1342266647

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com' 
EMAIL_HOST_USER = 'youremail@gmail.com'  # 使用するgmailアカウント
EMAIL_HOST_PASSWORD = 'yourpassword'     # 使用するgmailアカウントのパスワード
EMAIL_PORT = 587

5. urls.pyを修正

urls.py

urlpatterns = patterns('',
    # 他のurl定義

    url(r'^accounts/', include('registration.backends.default.urls')),
)


6. テンプレート追加

以下のレポジトリにひと通りのものがコミットされているので使わせていただきました。

https://github.com/yourcelf/django-registration-defaults


テンプレートはbase.htmlをextendsしてますので用意しておきます。base.htmlには{% block content %}{% endblock %}が必要です。


7. 動かす

あとはsyncdb、runserverすれば、ひと通り動かせるはずです。
http://localhost:8000/accounts/register/ からユーザー登録するとメールが届きます。



リンクはexample.comになっちゃってますのでそのまま踏んでもだめです。localhost:8000に変えてアクセスすればユーザー登録が完了します。


メールのリンクをアクセスすればユーザー登録が完了します。
http://localhost:8000/accounts/login/でログインできます。


ログイン後は/accounts/profileにリダイレクトされます。リダイレクト先を変更したい場合はsettings.pyにLOGIN_REDIRECT_URLで定義します

LOGIN_REDIRECT_URL = "/"